Страницы: 1
RSS
Как реализовать прогрессию только в видимых ячейках, на листе с примененным фильтром (то есть только в отфильтрованных ячейках)?, Как реализовать прогрессию только в видимых ячейках, на листе с примененным фильтром (то есть только в отфильтрованных ячейках)?
 
Здравтсвуйте.
Подскажите пожалуйста еще как реализовать прогрессию только в видимых ячейках, на листе с примененным фильтром (то есть только в отфильтрованных ячейках)?
Во вложенном файле есть некоторые данные, часть данных отфильтрована, то есть видны только итоги.
Надо реализовать прогрессию в отфильтрованных ячейках так, чтоб скрытые в результате фильтрации ячейки никак не участвовали в этом процессе.
Больше спасибо заранее.
 
Barmaldon,
Код
Sub asd()
Dim i As Long, cell As Range, lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range(Cells(2, 1), Cells(lr, 1)).SpecialCells(xlCellTypeVisible)
Rng.Offset(0, 2).ClearContents
For Each cell In Rng
    cell.Offset(0, 2) = _
    Application.WorksheetFunction.Max( _
    Range(Cells(2, 3), Cells(lr, 3)).SpecialCells(xlCellTypeVisible)) + 1
Next cell
End Sub

Не бойтесь совершенства. Вам его не достичь.
 
Вариант макросом.
Выделить ячейки. Запустить макрос.
Код
Sub myNumeration()
    Dim rr As Range
    On Error Resume Next
    Set rr = Intersect(Selection, ActiveSheet.UsedRange)
    On Error GoTo 0
    If rr Is Nothing Then Exit Sub
    
    Dim Application_Calculation As Long
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual
    
    Dim ii As Long
    Dim cl As Range
    For Each cl In rr
        If Not cl.EntireRow.Hidden Then
            If IsEmpty(cl.Value) Then cl.Value = ii + 1
            If IsNumeric(cl.Value) Then ii = cl.Value
        End If
    Next
    
    Application.Calculation = Application_Calculation
End Sub
 
Код
Sub OrdersNum()
  Dim rg As Range, c As Range, i&
  Set rg = Range([c2], Cells(Rows.Count, 2).End(xlUp).Offset(-1, 1)).SpecialCells(12)
  For Each c In rg: i = i + 1: c = i: Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Barmaldon, у Вас нет фильтра, у Вас группировка
Впрочем, все равно )))
Код
=СУММ(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;A2);C1)

или так
Код
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;A$1:A1)

Но первая должна быть побыстрее
Изменено: _Boroda_ - 09.11.2022 16:50:33
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_,  а сижу думаю че у меня промежуточные итоги не работают( спасбо
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, наверное, сами на себя ссылаются?
Или не 103, а просто 3 написано было?
Изменено: _Boroda_ - 09.11.2022 16:46:20
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_,  да думал что будет как-то так работать
Код
 =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(104;$C$1:C1)+1
Не бойтесь совершенства. Вам его не достичь.
 
Да, на другой столбец нужно ссылаться. Выше дописал там у себя
Скажи мне, кудесник, любимец ба’гов...
 
Mershik, МатросНаЗебре, Ігор Гончаренко, Большое спасибо за макросы, но макросы использовать нельзя (мне), извините, что сразу не написал об этом.
_Boroda_, отличная идея, спасибо, только один маленький неприятный момент: надо, чтоб "номер накладной" был не формулой, а твердой константой и не менялся ни при каких условиях. Конечно можно сохранить как значение, но все равно останется много "мусора" в неитоговых ячейках. В конкретном примере это можно решить через фильтрацию по [не содержит " ИТОГ"], с последующим удалением всех значений в колонке С. Но это в частном случае. А хотелось бы найти универсальное решение. Например как быть, если итоговое поле не содержит уникального ключа (в нашем пример уникальным ключом было вхождение текста " ИТОГ") по которому записи с итогами (там где нужен номер накладной) невозможно отфильтровать по какому то признаку. Предположим, что итога получены не через процедуру "Промежуточные итоги", а вручную, в результате фильтрации, и итоговое поле называлось бы "Яблоки", "Груши" и т.д., то есть никак бы не отличались от самих данных. Как быть в таком случае?
 
Цитата
написал:
номер накладной" был не формулой, а твердой константой и не менялся ни при каких условиях
впишите руками - это и без макросов и само меняться не будет
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
впишите руками - это и без макросов и само меняться не будет
10000 записей - руками не комильфо ))
Страницы: 1
Наверх