Страницы: 1
RSS
Посчитать количество ячеек, которое принадлежит значению
 
Добрый день!

В одном столбце вписаны контейнеры и номера коробок, которые в них лежат. Помогите, пожалуйста, посчитать количество коробок в каждом контейнере. Проблема состоит в том, что обычно приходит файл , в котором 30-50 тысяч строк и вручную это делать очень неудобно. Выглядит это примерно так:
Контейнер 1
1
1
1
Контейнер 2
2
2
2
Контейнер 3
3
3


В приложении файл с подробным примером.
Заранее спасибо!
 
astranet, здравствуйте
Накликал на PQ
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Вариант формулой массива.
Формула массива в С1 и протянуть вниз на количество строк, равное или больше количества контейнеров.
Код
=100000-НАИБОЛЬШИЙ(($A$1:$A$100000="Контейнер")*(100000-СТРОКА($A$1:$A$100000));СТРОКА())
Обычная формула в D1
Код
=СЧЁТЗ(СМЕЩ($A$1;C1+3;0;C2-C1-4))
Изменено: МатросНаЗебре - 05.03.2021 13:36:27
 
МатросНаЗебре, Jack Famous,спасибо большое за помощь!
 
Для вашего примера
Код
Sub iСontainer()
Dim Rng As Range
Dim NomerСontainer As Long
Dim iLastRow As Long
  Columns("B:D").ClearContents
    iLastRow = 1
  For Each Rng In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(2, 3).Areas
    If Rng.Cells(1) = "Контейнер" Then NomerСontainer = Rng.Cells(2)
    If Rng.Cells(1) = "SSCC/SN" Then
      Rng.Cells(0, 2) = "Контейнер " & NomerСontainer
      Rng.Cells(1, 2) = WorksheetFunction.CountA(Rng) - 1
      Rng.Cells(1, 2).NumberFormat = "#,##0"
      Cells(iLastRow, "C") = Rng.Cells(0, 2)
      Cells(iLastRow, "D") = Rng.Cells(1, 2)
      iLastRow = iLastRow + 1
    End If
  Next
    Cells(iLastRow, "C") = "Всего контейнеров: "
    Cells(iLastRow, "D") = WorksheetFunction.Sum(Range("D1:D" & iLastRow - 1))
End Sub
Страницы: 1
Наверх