|
|
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Недавно начал пробовать решать небольшие задачки с помощью макросов и часто сталкиваюсь с похожей задачей, когда нужно найти последнюю строку содержащюю данные, чтобы запустить цикл или скопировать определённую область. Идя по пути наименьшего сопротивления я в этих случаях всегда ищу столбец или строчку, в которой предполагаю не будет пустых ячеек, и подсчитываю количество простой функцией рабочего листа. Код: plaintext Но всё время есть опасность что в исходных данных будет где нибуть пустая ячейка (возможно просто ошибка) и последняя строчка посчитается неправильно. Да и вообще как найти последнюю строку или столбец диапазона с данными если если не знаешь будут ли там пустые ячейки встречаться или нет? Надеюсь у меня получилось объяснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 08:48 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
посмотри этот топик http://www.sql.ru/forum/actualthread.aspx?tid=385309 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 10:30 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Извиняюсь за вопросы, но если можно то я задам, а отвечать или нет вам решать 1) Я понимаю что вышеописанные варианты оба почти одно и то же, но может есть какая-то разница, если есть, то подскажите 2)Что значит Код: plaintext Код: plaintext 4) И самое главное - возможно ли не считать те ячейки которые содержат значения ошибки или "0" (это в том случае если на листе формулы протянуты дальше чем заканчивается диапазон данных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 11:47 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Извиняюсь опять же, сасое главное забыл вышеописанные способы лучше чем приведённый далее? Если да, то почему? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 11:59 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
1) первый вариант может быть использован для разных листов, т.к. лист указан в аргументе. Более универсальный вариант и, отличие от второго, не требует доработки для использования. Второй вариант - только идея. 2) Set rng = Cells - в переменную rng помещается диапазон "все ячейки текущего листа". 3) rng(1) - ссылка на первую ячейку по порядку из тех, что представлены в этом объекте (нумерация идет сначала в первом ряде слева направо, потом во втором и т.д.) 4) можно, но нужно дорабатывать, легче всего будет для конкретного листа с данными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:01 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
DeggasadИзвиняюсь опять же, сасое главное забыл вышеописанные способы лучше чем приведённый далее? Если да, то почему? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:02 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbapro1) первый вариант может быть использован для разных листов, т.к. лист указан в аргументе. Более универсальный вариант и, отличие от второго, не требует доработки для использования. Второй вариант - только идея. 2) Set rng = Cells - в переменную rng помещается диапазон "все ячейки текущего листа". 3) rng(1) - ссылка на первую ячейку по порядку из тех, что представлены в этом объекте (нумерация идет сначала в первом ряде слева направо, потом во втором и т.д.) 4) можно, но нужно дорабатывать, легче всего будет для конкретного листа с данными 1) Не понятно какая доработка нужна 2-му способу? 4) А как доработать? vbapro Deggasad Извиняюсь опять же, сасое главное забыл вышеописанные способы лучше чем приведённый далее? Если да, то почему? Код: plaintext 1. 2. 3. 4. 5. End Sub читай сообщения топика, откуда взял Читал, так и не понял если честно отличий там сказано, что это для листа целиком, так и 2 предыдущих примера вроде для листа целиком З.Ы.: Если задаю неправильные вопросы, не ругайте, просто я лучше их задам и не получу ответа, чем не попытаюсь мпросить совсем, это не значит что я совсем сам не хочу думать, на 80% вопросов которые у меня возникают я отвечаю сам. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:11 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
DeggasadИзвиняюсь опять же, сасое главное забыл вышеописанные способы лучше чем приведённый далее? Если да, то почему? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Здесь речь не может идти о "лучше - хуже" - данные коды выполняют разные функции: - первые два кода (по сути одно и то же, только один - Function, а др. Sub) ищут последнюю ячейку по всему листу (во всех столбцах) - вышеуказанный код ищет последнюю ячейку в одном конкретном столбце KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:46 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
KL (XL) DeggasadИзвиняюсь опять же, сасое главное забыл вышеописанные способы лучше чем приведённый далее? Если да, то почему? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Здесь речь не может идти о "лучше - хуже" - данные коды выполняют разные функции: - первые два кода (по сути одно и то же, только один - Function, а др. Sub) ищут последнюю ячейку по всему листу (во всех столбцах) - вышеуказанный код ищет последнюю ячейку в одном конкретном столбце KL [MVP - Microsoft Excel] Насчёт этого понял. Спасибо Открытый вопрос - Как не считать те ячейки которые содержат значения ошибки или "0" (это в том случае если на листе формулы протянуты дальше чем заканчивается диапазон данных)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:52 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Deggasad 1) Не понятно какая доработка нужна 2-му способу? 4) А как доработать? 1) например - перехват ошибок и др. 4) без конкретного примера трудно сказать DeggasadЗ.Ы.: Если задаю неправильные вопросы, не ругайте, просто я лучше их задам и не получу ответа, чем не попытаюсь мпросить совсем, это не значит что я совсем сам не хочу думать, на 80% вопросов которые у меня возникают я отвечаю сам. Спасибо! А что, кто-то тебя ругает? По-моему, vbapro очень корректно и на все отвечает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:56 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
KL (XL) 1) например - перехват ошибок и др. 4) без конкретного примера трудно сказать Конкретный пример прилагаю Попытался максимально приблизить к реальности и в модуль уже записал оба варианта (и Function, и Sub) нахождения последней ячейки. Необходимо посчитать последнюю ячейку, не считая помеченных жёлтым цветом. Исхожу из условия что изменить формулы не имею возможности. За корректные ответы спасибо большое, я ведь эту корректность и не пытался поставить под сомнение! Просто боюсь показаться полным лентяем, так сказать больше оправдание для самого себя почему столько вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 14:26 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Deggasad Необходимо посчитать последнюю ячейку, не считая помеченных жёлтым цветом. Исхожу из условия что изменить формулы не имею возможности. Обычно такой проблемы не стоит, т.к. на практике всегда есть уникальный столбец без формул по которому и определяют последнюю запись. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 14:42 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vkodor Deggasad Необходимо посчитать последнюю ячейку, не считая помеченных жёлтым цветом. Исхожу из условия что изменить формулы не имею возможности. Обычно такой проблемы не стоит, т.к. на практике всегда есть уникальный столбец без формул по которому и определяют последнюю запись. Код: plaintext Я так сейчас и делаю (ну не совсем так, но теперь буду делать так) Просто случай такой, что теоритически в любом столбце последняя строчка может быть пустой, хотя в другом будет какое-то значение, поэтому и хочу перестраховаться на будущее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 14:48 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
можно сделать комбинацию методик Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Далее по вопросам: проверку ячеек, что в них находится, лучше сделать в основном цикле. Т.е находишь физический конец данных с помощью универсальной функции LastRow, а в основной программе уже определяешь что там за данные: ошибки, #N/A или нули, и соотв. обрабатываешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 15:11 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbapro Далее по вопросам: проверку ячеек, что в них находится, лучше сделать в основном цикле. Т.е находишь физический конец данных с помощью универсальной функции LastRow, а в основной программе уже определяешь что там за данные: ошибки, #N/A или нули, и соотв. обрабатываешь Идею понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 15:47 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbapro Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ошибка: нужно WS.Rows.Count вместо Rows.Count Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 15:57 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Как мог так и написал, по крайней мере надеюсь идея понятна, если подскажите как функции рабочего листа не использовать буду благодарен, сейчас работает впринципе нормально. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 16:06 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
для твоего частного случая, может быть, это совсем неплохой вариант. Ну тогда, хотя бы раздели функционально на две части, чтоб LastRow можно было использовать в других местах: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 16:24 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Спасибо за участие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 16:54 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
не вопрос, а факт. т.к. сам участвовал в этом обсуждении и предлагал решения. решения оказались неверными, т.к. вот в таком файле не верно находится последняя колонка, если использовать алгоритм Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 17:31 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbaproне вопрос, а факт. т.к. сам участвовал в этом обсуждении и предлагал решения. решения оказались неверными, т.к. вот в таком файле не верно находится последняя колонка, если использовать алгоритм Код: plaintext 1. 2. 3. 4. Интересно, что данная ошибка возникает в Excel 2000-2007 и не возникает в Excel 97 :-) Я всегда говорил - слияние ячеек в Excel это едва ли не самая глючная фича :-( KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 03:23 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Еще факт. Возможно я последний, кто с ним встретился :), но пусть будет в топике. Конструкция типа Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 21:18 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbaproЕще факт. Возможно я последний, кто с ним встретился :), но пусть будет в топике. Конструкция типа Код: plaintext А пример выложить можешь и указать версию Excel? А то у меня no repro :-) KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 23:25 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
Пожалуй тоже поучаствую. Мой любимый find тупит наглухо с автофильтром. В приложенном файле 2 листа. Если на первом косяк хоть как-то объясним (ищет последнюю видимую ячейку), то на втором листе вообще что-то непонятное, заметил, что это происходит когда все отфильтрованные значения находятся в начале списка и рядом друг с другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 00:23 |
|
||
|
Номер последней строки или столбца
|
|||
|---|---|---|---|
|
#18+
vbaproЕще факт. Возможно я последний, кто с ним встретился :), но пусть будет в топике. Конструкция типа Код: plaintext У меня всегда находит последнюю видимую, вроде логика есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 00:25 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34330885&tid=2177075]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 513ms |

| 0 / 0 |
