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
макрос для Excel!
Модератор: Naeel Maqsudov
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
soulthiefer,
я, честно говоря, из вашей постановки предположил, что раз у вас ТАБЛИЦА то
она прямоугольная и соответственно все столбцы имеют одинаковое количество строк ...
Если это не так, просто берите максимальное значение. Или сразу
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оответственно можно выиграть несколько микросекунд
вынеся эту проверку из цикла и соответствующим образом её изменив.
(Последнюю строку надо очищать если в ней три пустых ячейки).
я, честно говоря, из вашей постановки предположил, что раз у вас ТАБЛИЦА то
она прямоугольная и соответственно все столбцы имеют одинаковое количество строк ...
Если это не так, просто берите максимальное значение. Или сразу
Код: Выделить всё
n =cells(1).specialcells(xlCellTypeLastCell).row
На всякий случай подскажу что 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оответственно можно выиграть несколько микросекунд
вынеся эту проверку из цикла и соответствующим образом её изменив.
(Последнюю строку надо очищать если в ней три пустых ячейки).
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
-
- Сообщения: 39
- Зарегистрирован: 21 сен 2007, 15:05
Aent
еще раз огромное спасибо !!!! работа теперь неописуемо обегчилась и ускорилась )))! !!! вы гений !
еще один вопрос чтоб больше не доставать (
если я захочу увеличить количество сравниваемых столбцов что я должен поменять ?
не сочтите за дерзость и назойлевость !!!
спасибо
еще раз огромное спасибо !!!! работа теперь неописуемо обегчилась и ускорилась )))! !!! вы гений !
еще один вопрос чтоб больше не доставать (
если я захочу увеличить количество сравниваемых столбцов что я должен поменять ?
не сочтите за дерзость и назойлевость !!!
спасибо
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
1) В циклах по i и по m вместо 4 реальное количество колонокsoulthiefer писал(а):что я должен поменять ?
2) В выражении 5 + m вместо 5 :
номер_колонки_с_которой_должен_начинаться_отчёт - 1
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com