Безразмерный массив в VBA
Формулировка задачи:
Добрый день, уважаемые коллеги
Подскажите, пожалуйста, кто сталкивался с безразмерными массивами в VBA?
Для примера, приложил файл-набросок.
Допустим у нас две колонки. Количество элементов не известно и постоянно меняется. По условию, что если во второй колонке "единичка" то в первой колонке "нужным нам элемент", если 0 то "не нужный". "Нужные элементы" необходимо сложить и записать их таблицей на втором листе. Посчитать сколько их. Если возможно упорядочить по возрастанию. Элементы всегда 3-х значные целочисленные.
Например:
На втором листе должна появится таблица:
Проблема в том, что количество элементов заранее неизвестно и границы массива соответственно, хз как применить ubount / lbount, а для того, что бы использовать динамический массив в VBA его сначала нужно переопределить. По 1 элементу пихать и переопределять? Я если элемент повторяется preserve и во второй уровень массива?
В общем, что то я мозг сломал как в VBA это сделать....
Заранее благодарю за любую помощь!
Решение задачи: «Безразмерный массив в VBA»
textual
Листинг программы
Option Explicit Sub tt() Dim a, i&, t$ With CreateObject("scripting.dictionary"): .comparemode = 1 a = Sheets("Данные").[h1].CurrentRegion.Value For i = 2 To UBound(a) t = a(i, 4) & "|" & a(i, 1) '1. Сколько раз мастера попадали в статистику .Item(t) = .Item(t) + 1 t = a(i, 4) & "|" & a(i, 3) '2. Сколько раз заканчивали работу, именно мастера (но и ученики, но можно отфильтровать сразу или в конце) .Item(t) = .Item(t) + 1 Next Workbooks.Add(1).Sheets(1).[a1].Resize(.Count, 2) = Application.Transpose(Array(.keys, .items)) End With End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д