Страница 2 из 2

Re: макрос для Excel!

Добавлено: 10 апр 2009, 10:12
soulthiefer
Aent
ааааааааааааааааа шикарно!!!!!!!!! просто супер !!!!!
класс!!!!!!
ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПА-СИ-БО!!!!

один вопросик почему он берет последнюю строчку по первой таблице я так понимаю это организованно здесь :
n = Cells(Cells.Rows.Count, 1).End(xlUp).Row

как сделать чтоб он сметрел не по первой колонке а по всем четырем ? потому что бывает что и 3-я или 4-я самая длинная !!!
и можете если не сложно разъяснить функции :
If Application.WorksheetFunction.CountIf([F:I], v)
If Application.WorksheetFunction.CountIf(Cells(1, m).Resize(n, 1), v)
If Application.WorksheetFunction.Sum(Range(Cells(k, 6), Cells(k, 9)))
Range(Cells(k, 6), Cells(k, 9)).ClearContents

Re: макрос для Excel!

Добавлено: 10 апр 2009, 14:05
Aent
soulthiefer,
я, честно говоря, из вашей постановки предположил, что раз у вас ТАБЛИЦА то
она прямоугольная и соответственно все столбцы имеют одинаковое количество строк ...
Если это не так, просто берите максимальное значение. Или сразу

Код: Выделить всё

n =cells(1).specialcells(xlCellTypeLastCell).row
Help по WorksheetFunction по прежнему доступен в Excel ...
На всякий случай подскажу что CountIf это по русски СЧЁТЕСЛИ...

Application.WorksheetFunction.CountIf([F:I], v) подсчитывает количество
вхождений числа v в колонках F : I. Если это число больше 0 то соответствующее повторяющееся значение мы уже включали в отчёт

Application.WorksheetFunction.CountIf(Cells(1, m).Resize(n, 1), v) подсчитывает
количество вхождений числа v в ранг, получаемый расширением ячейки в столбце
m 1-й строки на n строк.

Application.WorksheetFunction.Sum(Range(Cells(k, 6), Cells(k, 9))) подсчитывает
сумму очередной строки отчёта. Она будет равна v только если вхождение v не
кратное. В этом случае мы НЕ УВЕЛИЧИВАЕМ k (номер строки) и очищаем
строку отчёта Range(Cells(k, 6), Cells(k, 9)).ClearContents
Cобственно, поскольку ненужные строки затираются, это важно только для последней строки. Cоответственно можно выиграть несколько микросекунд
вынеся эту проверку из цикла и соответствующим образом её изменив.
(Последнюю строку надо очищать если в ней три пустых ячейки).

Re: макрос для Excel!

Добавлено: 13 апр 2009, 17:51
soulthiefer
Aent
еще раз огромное спасибо !!!! работа теперь неописуемо обегчилась и ускорилась )))! !!! вы гений !
еще один вопрос чтоб больше не доставать (
если я захочу увеличить количество сравниваемых столбцов что я должен поменять ?
не сочтите за дерзость и назойлевость !!!
спасибо

Re: макрос для Excel!

Добавлено: 13 апр 2009, 20:51
Aent
soulthiefer писал(а):что я должен поменять ?
1) В циклах по i и по m вместо 4 реальное количество колонок
2) В выражении 5 + m вместо 5 :
номер_колонки_с_которой_должен_начинаться_отчёт - 1