Господа, здравствуйте обращался к поиску нужного решения не нашёл.
Есть умная таблица из двух столбцов. Первый столбец "номер отправления", второй "Склад".
Необходимо выяснить все уникальные значение в столбце 1.
Далее запустить цикл на каждое уникальное значение из столбца 1.
Далее определить самое часто встречающееся название склада в столбце 2, соответствующее текущему уникальному номеру отправлению в цикле.
P.S Необходимости использовать Умную таблицу нет, она выгружается из power query. Можно предварительно превратить в диапазон.
Вот что у меня получилось: Застрял на последнем шаге. Файл с примером прилагаю.
Есть умная таблица из двух столбцов. Первый столбец "номер отправления", второй "Склад".
Необходимо выяснить все уникальные значение в столбце 1.
Далее запустить цикл на каждое уникальное значение из столбца 1.
Далее определить самое часто встречающееся название склада в столбце 2, соответствующее текущему уникальному номеру отправлению в цикле.
P.S Необходимости использовать Умную таблицу нет, она выгружается из power query. Можно предварительно превратить в диапазон.
Вот что у меня получилось: Застрял на последнем шаге. Файл с примером прилагаю.
Код |
---|
count = WorksheetFunction.CountA(ThisWorkbook.Sheets("WBApi").Columns(1)) 'присваиваем переменной myRange диапазон ячеек с исходным списком элементов Set myRange = ThisWorkbook.Sheets("WBApi").Range("A2:A" & count) Set myRange2 = ThisWorkbook.Sheets("WBApi").Range("B2:B" & count) 'заполняем новую коллекцию уникальными элементами On Error Resume Next For Each myCell In myRange myCollection.Add CStr(myCell.Value), CStr(myCell.Value) Next myCell On Error GoTo 0 For Each element In myCollection ThisWorkbook.Sheets("WBApi").ListObjects("WBApi__2").Range.AutoFilter Field:=1, Criteria1:=element 'Фильтруем таблицу sklad = WorksheetFunction.Index(Range2, WorksheetFunction.Match( _ WorksheetFunction.Max(WorksheetFunction.CountIf(Range2, Range2)), _ WorksheetFunction.CountIf(Range2, Range2), 0)) ' Данная функция выше не работает и врятле заработает т.к Анализирует не промежуточные итоги а диапазон. occ = occ + 1 ThisWorkbook.Sheets("WBApi").Cells(occ, 5) = myCollection ThisWorkbook.Sheets("WBApi").Cells(occ, 5) = sklad Next element End Sub |