Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчет количества строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет количества строк (Макросы/Sub)
Подсчет количества строк
rever27 Дата: Воскресенье, 31.05.2015, 21:57 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Подскажите, товарищи, как можно более правильно выполнить подсчет всех строк.
А именно: Активная ячейка находится посередине таблице, нужно узнать, сколько всего строк от самой верхней заполненной, до самой нижней заполненной.
Ориентиром служит колонка 17 (можно взять и несколько)
Мой код работает, но иногда пустую ячейку принимает не корректно и считает вообще все строки в листе (более млн)
К сообщению приложен файл: 2563047.xlsm (42.2 Kb)
 
Ответить
СообщениеПодскажите, товарищи, как можно более правильно выполнить подсчет всех строк.
А именно: Активная ячейка находится посередине таблице, нужно узнать, сколько всего строк от самой верхней заполненной, до самой нижней заполненной.
Ориентиром служит колонка 17 (можно взять и несколько)
Мой код работает, но иногда пустую ячейку принимает не корректно и считает вообще все строки в листе (более млн)

Автор - rever27
Дата добавления - 31.05.2015 в 21:57
KSV Дата: Воскресенье, 31.05.2015, 22:21 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Активная ячейка находится посередине таблице

Если именно "посередине", а не в первой и не в последней заполненной, можно, например, так:
[vba]
Код
    With ActiveCell
           MsgBox "Строк в таблице: " & .End(xlDown).Row - .End(xlUp).Row + 1
       End With
[/vba]

А если активная ячейка может быть в первой или в последней строке таблицы (и при этом таблица не занимает первую и последнюю строки листа), то так:
[vba]
Код
    With ActiveCell
          MsgBox "Строк в таблице: " & IIf(.Offset(1).Value, .End(xlDown).Row, .Row) - IIf(.Offset(-1).Value, .End(xlUp).Row, .Row) + 1
      End With
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Воскресенье, 31.05.2015, 22:45
 
Ответить
Сообщение
Активная ячейка находится посередине таблице

Если именно "посередине", а не в первой и не в последней заполненной, можно, например, так:
[vba]
Код
    With ActiveCell
           MsgBox "Строк в таблице: " & .End(xlDown).Row - .End(xlUp).Row + 1
       End With
[/vba]

А если активная ячейка может быть в первой или в последней строке таблицы (и при этом таблица не занимает первую и последнюю строки листа), то так:
[vba]
Код
    With ActiveCell
          MsgBox "Строк в таблице: " & IIf(.Offset(1).Value, .End(xlDown).Row, .Row) - IIf(.Offset(-1).Value, .End(xlUp).Row, .Row) + 1
      End With
[/vba]

Автор - KSV
Дата добавления - 31.05.2015 в 22:21
AndreTM Дата: Понедельник, 01.06.2015, 00:10 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
[vba]
Код
MsgBox "Строк в таблице: " & ActiveCell.CurrentRegion.Rows.Count
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение[vba]
Код
MsgBox "Строк в таблице: " & ActiveCell.CurrentRegion.Rows.Count
[/vba]

Автор - AndreTM
Дата добавления - 01.06.2015 в 00:10
rever27 Дата: Понедельник, 01.06.2015, 00:38 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV хорошо работает первый вариант.
Второй не подходит в связи с тем, что с таблицей еще ведутся действия по удалению нижних ячеек.
Спасибо!

AndreTM этот вариант будет работать, если нужно посчитать диапазон от самой первой до текущей.
 
Ответить
СообщениеKSV хорошо работает первый вариант.
Второй не подходит в связи с тем, что с таблицей еще ведутся действия по удалению нижних ячеек.
Спасибо!

AndreTM этот вариант будет работать, если нужно посчитать диапазон от самой первой до текущей.

Автор - rever27
Дата добавления - 01.06.2015 в 00:38
KSV Дата: Понедельник, 01.06.2015, 00:38 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
AndreTM, согласен! :) Так проще.... (если таблица на листе одна)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 01.06.2015, 00:41
 
Ответить
СообщениеAndreTM, согласен! :) Так проще.... (если таблица на листе одна)

Автор - KSV
Дата добавления - 01.06.2015 в 00:38
AndreTM Дата: Понедельник, 01.06.2015, 00:45 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
будет работать, если нужно посчитать диапазон от самой первой до текущей
Проверяли?
Какие ваши доказательства? (с)

Так проще.... (если таблица на листе одна)
А если несколько - то они же всё рано отдельно нарисованы, пропуски строк/столбцов есть между ними, а по условию:
Активная ячейка находится посередине таблицы...
т.е. мы находимся в нужной таблице, она отделена от других "таблиц", заполнена данными... все условия для .CurrentRegion


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Понедельник, 01.06.2015, 00:51
 
Ответить
Сообщение
будет работать, если нужно посчитать диапазон от самой первой до текущей
Проверяли?
Какие ваши доказательства? (с)

Так проще.... (если таблица на листе одна)
А если несколько - то они же всё рано отдельно нарисованы, пропуски строк/столбцов есть между ними, а по условию:
Активная ячейка находится посередине таблицы...
т.е. мы находимся в нужной таблице, она отделена от других "таблиц", заполнена данными... все условия для .CurrentRegion

Автор - AndreTM
Дата добавления - 01.06.2015 в 00:45
KSV Дата: Понедельник, 01.06.2015, 00:49 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
AndreTM, я думаю, это был вопрос :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеAndreTM, я думаю, это был вопрос :)

Автор - KSV
Дата добавления - 01.06.2015 в 00:49
rever27 Дата: Понедельник, 01.06.2015, 00:51 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
AndreTM
Немного не так выразился.
Выделяет диапазон от самой первой (по крайней мере у меня в полной версии таблицы) до последней заполненной :)

KSV Спасибо за второй вариант. тоже пригодился.
После фильтрации таблицы по дубликатам активной становилась последняя ячейки )


Сообщение отредактировал rever27 - Понедельник, 01.06.2015, 01:00
 
Ответить
СообщениеAndreTM
Немного не так выразился.
Выделяет диапазон от самой первой (по крайней мере у меня в полной версии таблицы) до последней заполненной :)

KSV Спасибо за второй вариант. тоже пригодился.
После фильтрации таблицы по дубликатам активной становилась последняя ячейки )

Автор - rever27
Дата добавления - 01.06.2015 в 00:51
KSV Дата: Понедельник, 01.06.2015, 01:00 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А если несколько - то они же всё рано отдельно нарисованы, пропуски строк/столбцов есть между ними, а по условию

Да, я уже проверил :) Ваш вариант корректно покажет и для нескольких таблиц на листе.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
А если несколько - то они же всё рано отдельно нарисованы, пропуски строк/столбцов есть между ними, а по условию

Да, я уже проверил :) Ваш вариант корректно покажет и для нескольких таблиц на листе.

Автор - KSV
Дата добавления - 01.06.2015 в 01:00
KSV Дата: Понедельник, 01.06.2015, 01:03 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
второй вариант. тоже пригодился.

Рад за Вас! :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 01.06.2015, 01:04
 
Ответить
Сообщение
второй вариант. тоже пригодился.

Рад за Вас! :)

Автор - KSV
Дата добавления - 01.06.2015 в 01:03
rever27 Дата: Понедельник, 01.06.2015, 01:05 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Товарищи. Вот полный вариант таблицы.
AndreTM лично у меня считает, что значений 76. Т.е. с самой первой строчки )
К сообщению приложен файл: 12.xlsm (42.2 Kb)
 
Ответить
СообщениеТоварищи. Вот полный вариант таблицы.
AndreTM лично у меня считает, что значений 76. Т.е. с самой первой строчки )

Автор - rever27
Дата добавления - 01.06.2015 в 01:05
KSV Дата: Понедельник, 01.06.2015, 02:40 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Это потому, что у вас ячейки X37:AG37;AJ37;AL37;AN37:AY37 имеют текстовый формат и их значения "", а не Empty. Поэтому .CurrentRegion думает, что строка 37 принадлежит единой таблице A1:DR76.
Чтобы убедиться, можете выделить эти ячейки - скопируйте адреса диапазонов из этого поста, вставьте все разом в поле "Имя" (см. вложенный скриншот), нажмите Enter, чтобы Excel их выделил, нажмите Del, чтобы очистить их, и .CurrentRegion вам покажет, что в вашей таблице 39 строк (строку заголовка (шапки) таблицы он тоже считает, т.к. она принадлежит таблице)
К сообщению приложен файл: 6195940.png (14.8 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеЭто потому, что у вас ячейки X37:AG37;AJ37;AL37;AN37:AY37 имеют текстовый формат и их значения "", а не Empty. Поэтому .CurrentRegion думает, что строка 37 принадлежит единой таблице A1:DR76.
Чтобы убедиться, можете выделить эти ячейки - скопируйте адреса диапазонов из этого поста, вставьте все разом в поле "Имя" (см. вложенный скриншот), нажмите Enter, чтобы Excel их выделил, нажмите Del, чтобы очистить их, и .CurrentRegion вам покажет, что в вашей таблице 39 строк (строку заголовка (шапки) таблицы он тоже считает, т.к. она принадлежит таблице)

Автор - KSV
Дата добавления - 01.06.2015 в 02:40
rever27 Дата: Понедельник, 01.06.2015, 07:40 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Да, все верно.
Но как мне находить эти пустые текстовые ячейки в таблице? Есть какой то макрос по поиску и очистке?


Сообщение отредактировал rever27 - Понедельник, 01.06.2015, 07:41
 
Ответить
СообщениеДа, все верно.
Но как мне находить эти пустые текстовые ячейки в таблице? Есть какой то макрос по поиску и очистке?

Автор - rever27
Дата добавления - 01.06.2015 в 07:40
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет количества строк (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!