Здравствуйте.
Помогите с вопросом. Не знаю стоит ли выкладывать ексель для примера. Попробую так объяснить.
Есть в одной книге много листов. В каждом листе однотипный наряд на работы. В каждом наряде на работы встречаются фамилии рабочего и его заработанная плата.
Сижу полдня, вспоминаю VBA, но как говорил наш препод "период полураспада знаний 2 недели, 2 недели не позанимался - половину забыл". Года три назад думаю сделал бы сам, не спрашивая никого, но к сожалению своему отупел.
Хочу макросом собрать в 1 массив все листы.
Код |
---|
Dim sh As Worksheet
Dim mas1() As Variant
Dim mas2() As Variant
For Each sh In ThisWorkbook.Worksheets
j=1
For i = 1 To 130 '130 навскидку потому что не знаю до конца сколько у меня рабочих на листе.
p = sh.Cells(i + 13, 6) - фамилии начинаются с 14 строки, и присутствую НЕ В КАЖДОЙ строке.
If p = 0 Or p = "" Or Then GoTo 10 'ускорить таким образом хотел, чтоб сразу на след клетку если пусто
Else
mas2(j, 1) = sh.Cells(i + 13, 6)'формируется массив с фамилией...
mas2(j, 2) = sh.Cells(i + 13, 9)' ..и суммой
End If
o = o + 1
10 Next i
|
дальше вот встрял, и первое встрял потому что массиве mas2 уже могут быть 2 и более строк с одной и той же фамилией, т.к. в наряде она может быть в нескольких местах. И надо бы сразу после обработки первого листа сравнить массив сам с собой и если есть повторяющиеся строки в первом измерении массива, то объединить их в одну и сложить второе их измерение(сумму).
Подскажите что-нибудь по этому поводу. Я так вижу создать какой-то массивИтог, в который бы я складывал резалты после каждого обработанного листа. Но что-то ничего не выходит. Заранее спс.