Всего строк в excel программно

I am developing a dashboard in excel. And I am looking for calculating row count. (How many records are present) ..

Since there are some blank cells I thought to go from bottom to up. I use the following

   Range("A1048576").Select
Selection.End(xlUp).Select

After this execution the active cell is at A113 which means the row count is 113.

My question is how to get this number 113 from the active cell?

Community's user avatar

asked Feb 4, 2014 at 13:37

Alwyn Miranda's user avatar

You can use this:

Dim lastrow as Long
lastrow = Cells(Rows.Count,"A").End(xlUp).Row

lastrow will contain number of last empty row in column A, in your case 113

answered Feb 4, 2014 at 13:38

Dmitry Pavliv's user avatar

Dmitry PavlivDmitry Pavliv

35.2k13 gold badges79 silver badges80 bronze badges

1

Here is what I usually use for that:

lastrow = WorksheetFunction.CountA(Columns("A:A"))

This will return the number of non-empty cells in Column «A» which is what I think you’re after. Hope this helps.

answered Feb 4, 2014 at 13:49

Jim Simson's user avatar

Jim SimsonJim Simson

2,7663 gold badges21 silver badges30 bronze badges

2

The best way to get the count of rows/records (in most cases) is to use .UsedRange.Rows.Count. You can assign the return value to a variable like this:

lastRow = Sheets(1).UsedRange.Rows.Count

If you use a function that includes a column (such as column A) as shown in other examples, that will only get you the count of rows in that column, which may or may not be what you’re going for. One caveat: if you have formatted rows below your last row with a value then it will return that row number.

answered Mar 3, 2021 at 0:28

SendETHToThisAddress's user avatar

If there is a slight chance that the last row of the worksheet is not empty, you should add an IsEmpty() check to @simoco ‘s solution. Therefore; following is a function that returns the last used row and check if the last row of the worksheet is empty:

Function lastRow(WS As Worksheet, iColumn As String) As Long

    If Not IsEmpty(WS.Range(iColumn & WS.Rows.Count)) Then
        lastRow = WS.Rows.Count
    Else
        lastRow = WS.Range(iColumn & WS.Rows.Count).End(xlUp).Row
    End If

End Function

answered Feb 4, 2014 at 14:22

simpLE MAn's user avatar

simpLE MAnsimpLE MAn

1,56213 silver badges22 bronze badges

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

Здравствуйте.
Подскажите, пож-та, как программно, при помощи VBA, посчитать общее количество строк в ячейке «A1», если текста много и он превышает максимальную высоту строки этой ячейки.
Ширина столбца, размер строки, шрифт меняться не будут, т.е. использовать существующие параметры при проведении расчета.
Пример во вложении. Должно получиться — в общем 41 строка (включая пустые строки с переносами)

Изменено: asesja21.10.2022 23:19:17

 

Пытливый

Пользователь

Сообщений: 4587
Регистрация: 22.12.2012

#2

21.10.2022 22:43:41

Здравствуйте.
Почему должно получиться 41? Исходя из примера — там 22 строки.
Формулой можно посчитать:

Код
=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;СИМВОЛ(10);""))

Кому решение нужно — тот пример и рисует.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#3

21.10.2022 22:59:39

Цитата
написал:
пож-та, как посчитать количество строк текста в ячейке «A1»,

никак

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#4

21.10.2022 23:10:31

Цитата
написал:
Почему должно получиться 41? Исходя из примера — там 22 строки.

Поправил пример. Имеются пустые строки с переносами.
Зашел в ячейку в файле примера и посчитал строки в ручную — 41 с последней пустой. Скрин во вложении.

 

БМВ

Модератор

Сообщений: 21380
Регистрация: 28.12.2016

Excel 2013, 2016

#5

21.10.2022 23:54:47

вставляем текст бокс, выбираем ширину нужную и авто размер, шрифт. вставляем текст.
смотрим сколько строк

Код
Лист2.shapes(1).TextFrame2.TextRange.Lines.Count

естественно пустые переводы тоже считаются как строки.

Прикрепленные файлы

  • example2739.xlsx (13.11 КБ)

Изменено: БМВ21.10.2022 23:57:28

По вопросам из тем форума, личку не читаю.

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

БМВ, спасибо. Завтра обязательно попробую. Должно получиться. Ключик уже где-то рядом))

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#7

22.10.2022 21:47:31

БМВ, проверил. Всё получилось как вы написали. Буду использовать код в своей программе для расчета высоты строчек объединенных ячеек с текстовыми данными.
Отличная идея! Ещё раз спасибо за помощь.

   ТаверСети

22.04.05 — 12:14

  Попытка
    Прайс = Новый ComОбъект(«Excel.Application»);
  Исключение
    Предупреждение(«Не удалось создать COM-объект Excel.Application!!!»);
    Возврат;
  КонецПопытки;
  Попытка
    Книга = Прайс.WorkBooks().Open(ИмяФайла);
  Исключение
    Предупреждение(«» + ОписаниеОшибки());
    Возврат;
  КонецПопытки;

    ну че тутуа писать????

      Книга.Close();

   miki

1 — 22.04.05 — 12:15

65k.
Или тебе только не пустые?

   ТаверСети

2 — 22.04.05 — 12:16

miki
ну чтобы точно понятно что дальше ничего нету

   miki

3 — 22.04.05 — 12:18

Проверяй значение ячейки на <пусто> или маркер какой-нить пиши в конец ХЛС.

   ТаверСети

4 — 22.04.05 — 12:18

miki (3)
нифина был другой способ
мне тута каньше ктото обьяснил но я забыл
а в архивах нету

   Ret

5 — 22.04.05 — 12:21

ВходExcel = СоздатьОбъект(«Excel.Application»);
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
….
а далее все обходы по строкам и столбцам через циклы.

   ТаверСети

6 — 22.04.05 — 12:23

Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
вот ето место пожалуйста поподробнее.
как получить 1-й лист?

   Ret

7 — 22.04.05 — 12:25

+5 Как пример
//*******************************************
//проверяет есть ли нужные сведения на листе
Функция ПроверкаПередзагрузкой(ВыбранныйЛист,НомерЛиста);
  ЕстьНужныеСведения=0;
  КонСтолб=ВыбранныйЛист.Cells(1,1).SpecialCells(11). Column;
  Для i = НачСтр По КонСтр Цикл
    Если ПустоеЗначение(ВыбранныйЛист.Cells(i,3).Text)=1 Тогда
      Продолжить;
    Иначе
      Для к=1 по КонСтолб Цикл
        //Проверим ячейки на всякую дрянь
        Если ПроверкаБитыхСсылок(ВыбранныйЛист.Cells(i,к))=1 Тогда
          ВнестиВКомментарийЗагрузки(«На выбранном вами листе №»+НомерЛиста+» имеются ошибки.Лист не будет загружен»);
          Возврат ЕстьНужныеСведения;
        КонецЕсли;
      КонецЦикла;
      Если //Возможно это индетификаторы колонок
      (Число(ВыбранныйЛист.Cells(i,3).Value)=3)
      и (Число(ВыбранныйЛист.Cells(i,1).Value)=1)
      и (Число(ВыбранныйЛист.Cells(i,2).Value)=2)
      и (Число(ВыбранныйЛист.Cells(i,4).Value)=4)
      и (Число(ВыбранныйЛист.Cells(i,5).Value)=5)
      и (Число(ВыбранныйЛист.Cells(i,6).Value)=6)
      и (Число(ВыбранныйЛист.Cells(i,7).Value)=7)
      и (Число(ВыбранныйЛист.Cells(i,8).Value)=8)
      и (Число(ВыбранныйЛист.Cells(i,9).Value)=9)
      и (Число(ВыбранныйЛист.Cells(i,10).Value)=10)
      и (Число(ВыбранныйЛист.Cells(i,11).Value)=11)
      и (Число(ВыбранныйЛист.Cells(i,12).Value)=12)
      и (Число(ВыбранныйЛист.Cells(i,13).Value)=13)
      и (Число(ВыбранныйЛист.Cells(i,14).Value)=14)
      и (Число(ВыбранныйЛист.Cells(i,15).Value)=15)
      и (Число(ВыбранныйЛист.Cells(i,16).Value)=16)
      и (Число(ВыбранныйЛист.Cells(i,17).Value)=17)
      Тогда //наверное то что нам нужно
        ЕстьНужныеСведения=1;
        Возврат ЕстьНужныеСведения;
      КонецЕсли;
    КонецЕсли;
  КонецЦикла;
  Возврат ЕстьНужныеСведения;
КонецФункции // ПроверкаПередзагрузкой
//Проверим, а есть ли нужные данные
  Если ПроверкаПередзагрузкой(НужныйЛист,ЛистExcel)=0 Тогда
    Предупреждение(«На выбранном вами листе нет нужных сведений»,5);
    Возврат;
  КонецЕсли;
МаксимумПустыхСтрок=25;//чтобы просмотреть все строки, но не зациклиться
  СчетчикПустыхСтрок=0;//т.к. м.б. какие-либо строки оставлены пустыми для разделения и прочей красивости
  НайденыйСтатус=»»;
    Для index=НачСтр По КонСтр Цикл // обход по строкам
      ЗначениеКолонки1 = НужныйЛист.Cells(index,1).Value;
      Если ПустоеЗначение(ЗначениеКолонки1)=1 Тогда //чтобы побыстрее просмотреть
        СчетчикПустыхСтрок=СчетчикПустыхСтрок+1;
        Если СчетчикПустыхСтрок>МаксимумПустыхСтрок Тогда //хорош копать
          СчетчикПустыхСтрок=0;
          Прервать;
        Иначе
          Продолжить;
        КонецЕсли;
      Иначе //не пустое значение 1колонки
…………….
ну и т.д.

   Ret

8 — 22.04.05 — 12:27

+5 и еще
//*******************************************
//проверяет нет ли всякой бяки на в ячейке
Функция ПроверкаБитыхСсылок(Ячейка)
  БитаяСсылка=»»;
  ТекстЯчейки=Ячейка.Text;
  Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда
    БитаяСсылка=0;
    //Сообщить(Ячейка.Value);
  Иначе
    БитаяСсылка=1;
    //Сообщить(ТекстЯчейки);
  КонецЕсли;
  Возврат БитаяСсылка;
КонецФункции // ПроверкаБитыхСсылок
———————————————
это основные операторы модуля
//Для исключения ошибок екселя
СписокОшибокЁкселя=СоздатьОбъект(«СписокЗначений»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ПУСТО!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ДЕЛ/0!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ЗНАЧ!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ССЫЛКА!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ИМЯ?»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ЧИСЛО!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#Н/Д»);

   ТаверСети

9 — 22.04.05 — 12:34

Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
вот ето место пожалуйста поподробнее.
как получить 1-й лист?

   ТаверСети

10 — 22.04.05 — 12:36

мне раньше показывали способ как
узнать количество непустых строк.

   Lex1C

11 — 22.04.05 — 12:39

9 — Метод Sheets(НомерЛиста)

   Ret

12 — 22.04.05 — 12:52

(9)
КоличествоЛистов=ВходExcel.Worksheets.Count;
Для i=1 По КоличествоЛистов Цикл

   ТаверСети

13 — 22.04.05 — 13:01

не сегодня чета нету умных…

   Железяка

14 — 22.04.05 — 13:02

(13)Предупреждение

   Ret

15 — 22.04.05 — 13:05

Мля, итак уже все разжевал…
Ты чо?
КоличествоЛистов=ВходExcel.Worksheets.Count;
Для i=1 По КоличествоЛистов Цикл
НужныйЛист=ВходExcel.Worksheets.Item(i);
………и т.д.

   ТаверСети

16 — 22.04.05 — 13:07

Ret(15)
как узнать номер последней не пустой строки?

   ТаверСети

17 — 22.04.05 — 13:09

  НужныйЛист=Книга.Sheets(1);
  КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
  КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
  Для поз=1 по КонСтрока Цикл
    Строка=НужныйЛист.Cells(поз,1).Value;
    Сообщить(«»+поз+»=»+Строка);
  КонецЦикла;
=========================
нехочет работать

   Ret

18 — 22.04.05 — 13:11

(13)
Я конечно привожу куски кода, который уже заточен под мои задачи, но из них вполне можно понять логику и использовать под себя.
Когда сам писал это, не мало пришлось покапаться в доках, а тебе выкладываешь на тарелочке, а ты разобраться не можешь.
За тебя-то никто не будет делать. Смотри, разбирайся и делай.

   miki

19 — 22.04.05 — 13:15

Может тебе надо:
  РеальноЮзается=Лист.UsedRange;
  КолонокРеальноЮзаемых=ИспользуемыйЛист.Columns.Count();
  СтрокРеальноЮзаемых=ИспользуемыйЛист.Rows.Count();

   Ret

20 — 22.04.05 — 13:15

Мля…. я тащусь….
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
КонСтр=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолб=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
Для index=НачСтр По КонСтр Цикл // обход по строкам
Для index2 = 1 По КонСтолб Цикл //обход по колонкам
Значение = НужныйЛист.Cells(index,index2).Value;
——далее работаешь со значением
———- и т.д. (шо тебе ящо конец цикла написать?)

   ТаверСети

21 — 22.04.05 — 13:16

короче ето делается так.
=====================
Процедура ЗагрузитьНажатие(Элемент)
  Попытка
    Прайс = Новый ComОбъект(«Excel.Application»);
  Исключение
    Предупреждение(«Не удалось создать COM-объект Excel.Application!!!»);
    Возврат;
  КонецПопытки;
  Попытка
    Книга = Прайс.WorkBooks().Open(ИмяФайла);
  Исключение
    Предупреждение(«» + ОписаниеОшибки());
    Возврат;
  КонецПопытки;

      НужныйЛист=Книга.Sheets(1);
  //НужныйЛист=Прайс.Worksheets.Item(1);
  КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
  КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
  Для поз=1 по КонСтрока Цикл
    Строка=НужныйЛист.Cells(поз,1).Value;
    Сообщить(«»+поз+»=»+Строка);
  КонецЦикла;

      Книга.Close();
КонецПроцедуры
============================
ето я чета туплю сегодня
спасибо за ответ Ret-у

Cells(1,1).SpecialCells(11).Row -последняя не пустая строка
Cells(1,1).SpecialCells(11).Column — последний не пустой столбец
и еще выше я привел процеДУРУ ПроверкаБитыхСсылок(Ячейка) привел.
Перед загрузкой если там ошибки, то на Значение = НужныйЛист.Cells(index,index2).Value 1С вылетает. Поэтому их надо обязательно отсечь!!!
Не помню где это описано, но это известная весчь.

escritor
30.09.2009 12:45 Прочитано: 24253

Как при загрузке данных из Excel получить количество колонок и строк в файле?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
01.10.2009 01:44 Ответ № 1

Например так:
Код 1C v 8.х

 НашФайл.Sheets.Item(к).UsedRange.Columns.Count();   //Количество колонок
НашФайл.Sheets.Item(к).UsedRange.Rows.Count(); //Количество строк

Посмотрите пример, в котором это используется

demiurg
05.10.2009 12:14 Ответ № 2

О, только вчера над этим же голову ломал, я получил так:
Код 1C v 8.х

 Попытка
гл_appExcel = Новый COMObject("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + "Не удалось найти приложение Microsoft Excel!");
Попытка
ПолноеИмяФайла = "C:ЗаявкиПоступившиеtemp.xls";
exWorkBook = гл_appExcel.Workbooks.Open(ПолноеИмяФайла);
Исключение
Сообщить(ОписаниеОшибки() + " Не удалось открыть файл " + ПолноеИмяФайла);
КонецПопытки;
RangeAll = exWorkBook.ActiveSheet.UsedRange;
// Определим количество всех строк и колонок
ЧислоКолонок = RangeAll.Columns.Count;
ЧислоСтрок= RangeAll.Rows.Count;
//Получение данных о контрагенте
КодКонтрагента = СокрЛП(RangeAll.Cells( 8, 4 ).Text);
ИмяКонтрагента = СокрЛП(RangeAll.Cells( 7, 4 ).Text);
rasswet
07.10.2009 09:14 Ответ № 3

UsedRange -это заполненые?
RangeAll -это все?
если в документе есть столбцы в которых были данные, но они были удалены через del, т.е. там пусто. какой из методов корректно это опознает?

demiurg
07.10.2009 16:39 Ответ № 4

UsedRange — это все ячейки содержащие значение на данный момент.
Если был нажат del, то это пустая ячейка, то есть нет значений.

E_Migachev
25.10.2009 22:49 Ответ № 5

Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .

Содержание

  • Определение количества строк
    • Способ 1: указатель в строке состояния
    • Способ 2: использование функции
    • Способ 3: применение фильтра и условного форматирования
  • Вопросы и ответы

Подсчет строк в Microsoft Excel

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

Определение количества строк

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

Способ 1: указатель в строке состояния

Самый простой способ решить поставленную задачу в выделенном диапазоне – это посмотреть количество в строке состояния. Для этого просто выделяем нужный диапазон. При этом важно учесть, что система считает каждую ячейку с данными за отдельную единицу. Поэтому, чтобы не произошло двойного подсчета, так как нам нужно узнать количество именно строк, выделяем только один столбец в исследуемой области. В строке состояния после слова «Количество» слева от кнопок переключения режимов отображения появится указание фактического количества заполненных элементов в выделенном диапазоне.

Отображение количества строк в строке состояния в Microsoft Excel

Правда, случается и такое, когда в таблице нет полностью заполненных столбцов, при этом в каждой строке имеются значения. В этом случае, если мы выделим только один столбец, то те элементы, у которых именно в той колонке нет значений, не попадут в расчет. Поэтому сразу выделяем полностью конкретный столбец, а затем, зажав кнопку Ctrl кликаем по заполненным ячейкам, в тех строчках, которые оказались пустыми в выделенной колонке. При этом выделяем не более одной ячейки на строку. Таким образом, в строке состояния будет отображено количество всех строчек в выделенном диапазоне, в которых хотя бы одна ячейка заполнена.

Отображение количества строк в строке состояния с неполными столбцами в Microsoft Excel

Но бывают и ситуации, когда вы выделяете заполненные ячейки в строках, а отображение количества на панели состояния так и не появляется. Это означает, что данная функция просто отключена. Для её включения кликаем правой кнопкой мыши по панели состояния и в появившемся меню устанавливаем галочку напротив значения «Количество». Теперь численность выделенных строк будет отображаться.

Включение отображение количества в строке состояния в Microsoft Excel

Способ 2: использование функции

Но, вышеуказанный способ не позволяет зафиксировать результаты подсчета в конкретной области на листе. К тому же, он предоставляет возможность посчитать только те строки, в которых присутствуют значения, а в некоторых случаях нужно произвести подсчет всех элементов в совокупности, включая и пустые. В этом случае на помощь придет функция ЧСТРОК. Её синтаксис выглядит следующим образом:

=ЧСТРОК(массив)

Её можно вбить в любую пустую ячейку на листе, а в качестве аргумента «Массив» подставить координаты диапазона, в котором нужно произвести подсчет.

Функция ЧСТРОК в Microsoft Excel

Для вывода результата на экран достаточно будет нажать кнопку Enter.

Результат функции ЧСТРОК в Microsoft Excel

Lumpics.ru

Причем подсчитываться будут даже полностью пустые строки диапазона. Стоит заметить, что в отличие от предыдущего способа, если вы выделите область, включающую несколько столбцов, то оператор будет считать исключительно строчки.

Пользователям, у которых небольшой опыт работы с формулами в Экселе, проще работать с данным оператором через Мастер функций.

  1. Выделяем ячейку, в которую будет производиться вывод готового итога подсчета элементов. Жмем на кнопку «Вставить функцию». Она размещена сразу слева от строки формул.
  2. Переход в Мастер функций в Microsoft Excel

  3. Запускается небольшое окно Мастера функций. В поле «Категории» устанавливаем позицию «Ссылки и массивы» или «Полный алфавитный перечень». Ищем значение «ЧСТРОК», выделяем его и жмем на кнопку «OK».
  4. Переход в окно аргументов функции ЧСТРОК в Microsoft Excel

  5. Открывается окно аргументов функции. Ставим курсор в поле «Массив». Выделяем на листе тот диапазон, количество строк в котором нужно подсчитать. После того, как координаты этой области отобразились в поле окна аргументов, жмем на кнопку «OK».
  6. Аргументы функции ЧСТРОК в Microsoft Excel

  7. Программа обрабатывает данные и выводит результат подсчета строк в предварительно указанную ячейку. Теперь этот итог будет отображаться в данной области постоянно, если вы не решите удалить его вручную.

Результат обработки функции ЧСТРОК в Microsoft Excel

Урок: Мастер функций в Экселе

Способ 3: применение фильтра и условного форматирования

Но бывают случаи, когда нужно подсчитать не все строки диапазона, а только те, которые отвечают определенному заданному условию. В этом случае на помощь придет условное форматирование и последующая фильтрация

  1. Выделяем диапазон, по которому будет производиться проверка на выполнение условия.
  2. Выделение диапазона в Microsoft Excel

  3. Переходим во вкладку «Главная». На ленте в блоке инструментов «Стили» жмем на кнопку «Условное форматирование». Выбираем пункт «Правила выделения ячеек». Далее открывается пункт различных правил. Для нашего примера мы выбираем пункт «Больше…», хотя для других случаев выбор может быть остановлен и на иной позиции.
  4. Переход к условному форматированию в Microsoft Excel

  5. Открывается окно, в котором задается условие. В левом поле укажем число, ячейки, включающие в себя значение больше которого, окрасятся определенным цветом. В правом поле существует возможность этот цвет выбрать, но можно и оставить его по умолчанию. После того, как установка условия завершена, жмем на кнопку «OK».
  6. Форматирование в Microsoft Excel

  7. Как видим, после этих действий ячейки, удовлетворяющие условию, были залиты выбранным цветом. Выделяем весь диапазон значений. Находясь во все в той же вкладке «Главная», кликаем по кнопке «Сортировка и фильтр» в группе инструментов «Редактирование». В появившемся списке выбираем пункт «Фильтр».
  8. Включение фильтра в Microsoft Excel

  9. После этого в заглавиях столбцов появляется значок фильтра. Кликаем по нему в том столбце, где было проведено форматирование. В открывшемся меню выбираем пункт «Фильтр по цвету». Далее кликаем по тому цвету, которым залиты отформатированные ячейки, удовлетворяющие условию.
  10. Включение сортировки по цвету в Microsoft Excel

  11. Как видим, не отмеченные цветом ячейки после данных действий были спрятаны. Просто выделяем оставшийся диапазон ячеек и смотрим на показатель «Количество» в строке состояния, как и при решении проблемы первым способом. Именно это число и будет указывать на численность строк, которые удовлетворяют конкретному условию.

подсчет строк по условию в Microsoft Excel

Урок: Условное форматирование в Эксель

Урок: Сортировка и фильтрация данных в Excel

Как видим, существует несколько способов узнать количество строчек в выделенном фрагменте. Каждый из этих способов уместно применять для определенных целей. Например, если нужно зафиксировать результат, то в этом случае подойдет вариант с функцией, а если задача стоит подсчитать строки, отвечающие определенному условию, то тут на помощь придет условное форматирование с последующей фильтрацией.

Изменение размера ячейки в VBA Excel. Высота строки, ширина столбца, автоподбор ширины ячейки. Свойства RowHeight и ColumnWidth объекта Range.

Размер ячейки

Размер ячейки по высоте и ширине определяется высотой строки и шириной столбца, на пересечении которых она находится. Если, в вашем случае, нежелательно изменять размеры всей строки или всего столбца, используйте объединенные ячейки нужной величины.

Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.

Информационные окна с высотой строки и шириной столбца в Excel

Высота строки и ширина столбца в Excel

Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.

На сайте поддержки офисных приложений Microsoft так написано об этих величинах:

  • высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
  • ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.

Смотрите, как сделать все ячейки рабочего листа квадратными.

Высота строки

Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.

Примеры изменения высоты строк:

Пример 1
Изменение высоты отдельной ячейки:

ActiveCell.RowHeight = 10

в результате, строка, в которой находится активная ячейка, приобретает высоту, равную 10 пунктам.

Пример 2
Изменение высоты строки:

в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.

Пример 3
Изменение высоты ячеек заданного диапазона:

Range(«A1:D6»).RowHeight = 20

в результате, каждой из первых шести строк рабочего листа будет задана высота, равная 20 пунктам.

Пример 4
Изменение высоты ячеек целого столбца:

Columns(5).RowHeight = 15

в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.

Ширина столбца

Для изменения ширины столбца используйте свойство ColumnWidth объекта Range. Как и в случае с высотой строки, не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — ширина всех столбцов, пересекающихся с объектом Range будет изменена после присвоения свойству ColumnWidth этого объекта нового значения.

Примеры изменения ширины столбцов:

Пример 1
Изменение ширины отдельной ячейки:

ActiveCell.ColumnWidth = 15

в результате, столбец, в котором находится активная ячейка, приобретает ширину, равную 15 символам.

Пример 2
Изменение ширины столбца:

Columns(3).ColumnWidth = 50

в результате, третий столбец рабочего листа (столбец «C») приобретает ширину, равную 50 символам.

Пример 3
Изменение ширины ячеек заданного диапазона:

Range(«A1:D6»).ColumnWidth = 25

в результате, каждому из первых четырех столбцов рабочего листа будет задана ширина, равная 25 символам.

Пример 4
Изменение ширины ячеек целой строки:

в результате, всем столбцам рабочего листа будет назначена ширина, равная 35 символам.

Автоподбор ширины

Для автоподбора ширины ячейки в соответствие с размером ее содержимого используйте следующий код:

‘запишем для примера в любую ячейку рабочего

‘листа какой-нибудь текст, например, такой:

Cells(5, 5) = «Автоподбор ширины ячейки»

‘теперь подгоним ширину ячейки, а точнее

‘столбца, в котором эта ячейка находится:

Cells(5, 5).EntireColumn.AutoFit

Имейте в виду, что ширина столбца будет подогнана по расположенной в этом столбце ячейке с самым длинным содержимым. Например, если длина содержимого ячейки Cells(7, 5) будет превышать длину содержимого ячейки Cells(5, 5), то автоподбор ширины пятого столбца произойдет по содержимому ячейки Cells(7, 5), несмотря на то, что в строке кода указана другая ячейка.

Как осуществить автоподбор ширины объединенной ячейки, в которой метод AutoFit не работает, смотрите в следующей статье.

Решение, предложенное в этом ответе, устарело и может перестать работать.


Взглянув на исходный код OpenPyXL (IterableWorksheet) Я выяснил, как получить количество столбцов и строк из лист итератора:

wb = load_workbook(path, use_iterators=True)
sheet = wb.worksheets[0]

row_count = sheet.get_highest_row() - 1
column_count = letter_to_index(sheet.get_highest_column()) + 1

IterableWorksheet.get_highest_column возвращает строку с буквой столбца, которую вы можете видеть в Excel, например. «A», «B», «C» и т.д. Поэтому я также написал функцию для перевода буквы столбца к индексу на основе нуля:

def letter_to_index(letter):
    """Converts a column letter, e.g. "A", "B", "AA", "BC" etc. to a zero based
    column index.

    A becomes 0, B becomes 1, Z becomes 25, AA becomes 26 etc.

    Args:
        letter (str): The column index letter.
    Returns:
        The column index as an integer.
    """
    letter = letter.upper()
    result = 0

    for index, char in enumerate(reversed(letter)):
        # Get the ASCII number of the letter and subtract 64 so that A
        # corresponds to 1.
        num = ord(char) - 64

        # Multiply the number with 26 to the power of `index` to get the correct
        # value of the letter based on it index in the string.
        final_num = (26 ** index) * num

        result += final_num

    # Subtract 1 from the result to make it zero-based before returning.
    return result - 1

Я все еще не понял, как получить размеры столбцов, поэтому я решил использовать шрифт с фиксированной шириной и автоматически масштабированные столбцы в моем приложении.

Вопрос:

Я хочу программно извлекать данные из листа Excel и вставлять их в таблицу базы данных.

Как определить количество столбцов и строк на листе или иначе перебрать строки?

У меня

Excel._Worksheet worksheet = (Excel._Worksheet)workbook.ActiveSheet;

Я пробовал worksheet.Range.Rows.Count

который выдает

Индексированное свойство “Microsoft.Office.Interop.Excel._Worksheet.Range” имеет необязательные аргументы, которые должны быть предоставлены

Что нужно сделать?

Лучший ответ:

Я предполагаю, что вы действительно ищете последнюю использованную строку. В этом случае вам нужно написать его следующим образом:

Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;

Ответ №1

public void IterateRows(Excel.worksheet worksheet)
{
//Get the used Range
Excel.Range usedRange = worksheet.UsedRange;

//Iterate the rows in the used range
foreach(Excel.Range row in usedRange.Rows)
{
//Do something with the row.

//Ex. Iterate through the row data and put in a string array
String[] rowData = new String[row.Columns.Count];
for(int i = 0; i < row.Columns.Count; i++)
rowData[i] = row.Cells[1, i + 1].Value2.ToString();
}
}

Это компилируется и работает просто отлично для меня! Я использую его для извлечения строк с отсутствующими полями в журнал ошибок.

Ответ №2

Посмотрите на свойство UsedRange в Excel.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Всего символов в ячейке excel
  • Всплывающее окно для даты в excel
  • Всего символов в строке excel
  • Всплывающее окно да нет в excel
  • Всего по ссуде excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии