Как узнать количество строк в файле vba

Обновлено: 03.07.2024

  1. выбрать папку с открытыми файлами
  2. затем подсчитывать количество строк в каждом файле (каждый файл содержит только 1 лист).
  3. для перемещения в другую папку все файлы, содержащие более 1 строки

Я очень новичок в VBA, так что я нашел, как подсчитать количество строк из активного листа, но я до сих пор не могу автоматически открывать файлы и перемещаться в другую папку:

Может кто-нибудь поможет в этом, пожалуйста?

Это на самом деле легко. Действительно легко. 🙂

Во-первых, код для выбора папки для поиска файлов Excel. Использовал Google и искал excel vba select folder dialog . Первый результат дает этот код:

Теперь некоторые передовые передовые методы. Вместо того, чтобы открывать каждую рабочую книгу/рабочий лист/файл и подсчитывать строки в каждом из открытых файлов (что очень контрастно интуитивно понятно), позвольте модифицировать приведенный выше код для подсчета строк в каждом файле, а затем переместить их в другую папку, если они имеют более одной (1) используемой строки. Мы также изменим приведенный выше код, чтобы принять во внимание также первую функцию, чтобы получить папку, в которую мы хотим применить второй код.

Посмотрите, что там произошло? Мы GetFolder функцию GetFolder и назначили ее MyFolder . Затем мы объединяем MyFolder и подстановочную строку, а затем передаем ее Dir чтобы мы могли перебирать файлы. Какие еще две вещи? Правильно, подсчитайте используемые строки И перемещение файлов. Для используемых строк я взломаю простую функцию, чтобы проверить только лист книги, чтобы увидеть, имеет ли строка 2 или больше.

Теперь, пусть связывает их все вместе аккуратно.

Пробовал и тестировал. Сообщите нам, если это сработает для вас.

Хороший ответ из Манхэттена: именно так я использую встроенные функции Excel для выбора папки и получения набора имен файлов.

Однако там есть интересный вопрос:

Являются ли эти одностраничные книги Excel файлами, только текстовыми файлами.csv?

Если у них есть расширение.csv, вам не нужно открывать их в Excel для подсчета строк!

Вот код для этого:

Быстрый VBA для подсчета строк в файле CSV

Предупреждение: Horrible Hack Строго говоря, я должен объявить Dim arrBytes(CHUNK_SIZE) As Byte и использовать этот массив байтов вместо strChunk для получения Get из файла, открытого для двоичного чтения.

Тип VBA String представляет собой массив байтов с оболочкой, который позволяет вашему коду (или, скорее, компилятору) обрабатывать всю эту сложность в фоновом режиме.

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

Александр80 » 24.01.2005 (Пн) 19:39

Подскажите, как определить количество строк в файле?
У меня есть текстовой файл (большой)… и его нужно загрузить в List. Так как загрузка занимает определенное время, хотелось бы отслеживать степень загрузки в List c визуально с помощью ProgressBar. А вот, как это сделать я не знаю… Мне кажется, что надо узнать количество строк в файле и потом полученную информацию использовать для установки значения ProgressBar1.Max.

Может есть другой способ? Подскажите пожалуйста…

KDima » 24.01.2005 (Пн) 20:04

Скорость загрузги из файла не слишком зависит от количества строк. ну может слишком
Я думаю лучше устанавливать относительно размера файла.

Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Александр80 » 24.01.2005 (Пн) 20:08

Не согласен. У меня 162 789 строк (орфографический словарь) И загрузка продолжается достаточно долго.

Александр80 » 24.01.2005 (Пн) 20:09

KDima писал(а): Я думаю лучше устанавливать относительно размера файла.

Идея хорошая. я тоже о ней подумал.

KDima » 24.01.2005 (Пн) 20:26

162 789 я подозреваю, что 162 789 пустых строк будут грузится быстрее

Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Александр80 » 24.01.2005 (Пн) 20:31

На самом деле, я просто ради интереса решил в лист загрузить такое количество строк (это безумие)… Если честно, думал никогда этого процесса до конца не дождусь… А потом стало интересно, как можно визуально этот процесс наблюдать …? Вот и мучаюсь с ProgressBar…

_Мика_ » 24.01.2005 (Пн) 21:22

Ну вообще, если я не ошибаюсь, List поддерживает 32 тыс с копейками строк! -Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Александр80 » 24.01.2005 (Пн) 22:29

_Мика_ Ты не ошибаешься и это моя вторая проблема.

Блин старенное событие происходит при загрузки в LIST1
List1.ListCount доходит до 32 000 (приблизительно), а затем обратно уменьшается на одо значение и до 0 после до -32 000 потом опять до 0 и так далее . Я грузил файл 162 000 строк.

Private Sub Command1_Click()
Dim t As String
Dim txt As String

  1. выбрать папку с открытыми файлами
  2. затем подсчитывать количество строк в каждом файле (каждый файл содержит только 1 лист).
  3. для перемещения в другую папку все файлы, содержащие более 1 строки

Я очень новичок в VBA, так что я нашел, как подсчитать количество строк из активного листа, но я до сих пор не могу автоматически открывать файлы и перемещаться в другую папку:

Может кто-нибудь поможет в этом, пожалуйста?

Это на самом деле легко. Действительно легко. 🙂

Во-первых, код для выбора папки для поиска файлов Excel. Использовал Google и искал excel vba select folder dialog . Первый результат дает этот код:

Теперь некоторые передовые передовые методы. Вместо того, чтобы открывать каждую рабочую книгу/рабочий лист/файл и подсчитывать строки в каждом из открытых файлов (что очень контрастно интуитивно понятно), позвольте модифицировать приведенный выше код для подсчета строк в каждом файле, а затем переместить их в другую папку, если они имеют более одной (1) используемой строки. Мы также изменим приведенный выше код, чтобы принять во внимание также первую функцию, чтобы получить папку, в которую мы хотим применить второй код.

Посмотрите, что там произошло? Мы GetFolder функцию GetFolder и назначили ее MyFolder . Затем мы объединяем MyFolder и подстановочную строку, а затем передаем ее Dir чтобы мы могли перебирать файлы. Какие еще две вещи? Правильно, подсчитайте используемые строки И перемещение файлов. Для используемых строк я взломаю простую функцию, чтобы проверить только лист книги, чтобы увидеть, имеет ли строка 2 или больше.

Теперь, пусть связывает их все вместе аккуратно.

Пробовал и тестировал. Сообщите нам, если это сработает для вас.

Хороший ответ из Манхэттена: именно так я использую встроенные функции Excel для выбора папки и получения набора имен файлов.

Однако там есть интересный вопрос:

Являются ли эти одностраничные книги Excel файлами, только текстовыми файлами.csv?

Если у них есть расширение.csv, вам не нужно открывать их в Excel для подсчета строк!

Вот код для этого:

Быстрый VBA для подсчета строк в файле CSV

Предупреждение: Horrible Hack Строго говоря, я должен объявить Dim arrBytes(CHUNK_SIZE) As Byte и использовать этот массив байтов вместо strChunk для получения Get из файла, открытого для двоичного чтения.

Тип VBA String представляет собой массив байтов с оболочкой, который позволяет вашему коду (или, скорее, компилятору) обрабатывать всю эту сложность в фоновом режиме.

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


В Excel мы используем функцию count для подсчета количества ячеек, которые содержат числа. То же самое можно сделать и в VBA. В VBA мы можем использовать ту же функцию Count, чтобы узнать, сколько номеров ячеек содержат числа. Считает только ячейку с числами. Значения, отличные от чисел, не могут быть подсчитаны.

Синтаксис Count в Excel VBA

Синтаксис для функции VBA Count в Excel выглядит следующим образом:


Как использовать VBA Count в Excel?

Мы узнаем, как использовать функцию подсчета VBA, с несколькими примерами в Excel.

Вы можете скачать этот шаблон VBA Count Excel здесь - Шаблон VBA Count Excel

Пример № 1 - количество VBA

Для реализации этого у нас есть список некоторых данных в столбце А. Этот список содержит цифры и тексты, как показано ниже. Теперь мы с помощью функции Count в VBA увидим, сколько ячеек имеют числа. Для этого мы определили ячейку в позиции A8, где мы увидим вывод функции Count через VBA.


Шаг 1: Для этого нам нужен модуль. Перейдите на вкладку меню «Вставка» и выберите «Модуль», как показано ниже из списка.


Шаг 2: После этого мы получим пустое окно модуля. Теперь в это напишите подкатегорию VBA Count. Или выберите любое другое имя согласно вашему выбору.

Код:


Шаг 3: Выберите диапазон ячейки, в которой мы хотим применить функцию Count. Здесь нашей выходной ячейкой является A8, как определено выше. Таким образом, мы выбрали его в качестве нашего диапазона .

Код:


Шаг 4: Теперь получите команду Value, и это позволит нам добавить значение в нее.

Код:


Шаг 5: Теперь с помощью функции подсчета выберите диапазон ячеек, из которого мы хотим получить количество ячеек, которое содержит только числа. Здесь мы выбрали диапазон ячеек от А1 до А6.

Код:


Ste 6: После этого скомпилируйте код и запустите, нажав кнопку воспроизведения. Как мы видим ниже, количество ячеек, содержащих числа, равно 3. Что означает, что функция Count в VBA дала счетчик ячеек с номерами от A1 до A3.

Пример № 2 - Количество VBA

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


Теперь мы применим функцию Count и посмотрим, может ли она считать даты и числовые текстовые ячейки или нет. Мы можем снова написать новый код или ссылаться на тот же код, который мы видели в примере 1, и просто изменить ячейки ссылки.

Шаг 1: Перейдите на вкладку меню «Вставка» и выберите пункт «Модуль», как показано ниже в списке.

Код:


Шаг 2: Выберите диапазон ячеек, в котором мы хотим увидеть вывод. Вот эта ячейка C12.

Код:


Шаг 3: Теперь используйте функцию подсчета в кавычках для выбора диапазона тех ячеек, которые нам нужно посчитать. Здесь этот диапазон от ячейки C1 до C10.

Код:


Шаг 4: Теперь запустите приведенный выше код.

Мы увидим, что функция Count вернула счетчик 6, как показано ниже. Это означает, что функция count может также считать ячейки с датой. Здесь значения, выделенные жирным шрифтом, являются значениями, которые только что были подсчитаны с помощью функции Count в VBA.

Пример № 3 - Количество VBA

Есть еще один способ использовать функцию подсчета в VBA. Этот метод предполагает использование активных ячеек листа. Здесь мы будем использовать те же данные, которые мы видели в примере-1.


Шаг 1: Откройте новый модуль и создайте подкатегорию с именем VBA Count, как показано ниже.

Код:


Шаг 2. Сначала вставьте функцию ActiveCell в VBA. Это поможет в выборе диапазона ячеек.

Код:


Шаг 3: Теперь с помощью функции Formula выберите номер строки и номер столбца, которые мы хотим вставить в функцию Count. Здесь наша ссылочная строка начинается с 1, а столбец также равен 1.

Код:


Шаг 4: Теперь вставьте функцию Count под кавычками, как показано ниже.

Код:


Шаг 5: Выберите диапазон ячеек от точки, где мы применяем функцию Count. По мере того, как мы поднимаемся от A8 к A1, количество строк будет равно « -7 », а столбец будет первым, но ничто не будет упомянуто в числе строк «-2» от начальной точки, которая является ячейкой A8 .

Код:


Шаг 6: Теперь выберите диапазон ячеек, в котором мы хотим увидеть результат. Здесь, в этой ячейке диапазона A8, мы также увидим курсор.

Код:


Шаг 7: Теперь запустите код. Мы увидим, что функция count вернула то же число, что и 3, которое мы получили в примере-1.

Плюсы VBA Count

  1. Это так же просто, как применять функцию подсчета в Excel.
  2. Это одна из самых простых функций, которые можно автоматизировать с помощью VBA.
  3. Если процесс Count повторяется несколько раз, то его автоматизация с помощью функции Count в VBA - это экономия времени и усилий.

То, что нужно запомнить

  • При применении функции подсчета в VBA всегда указывайте имя функции в кавычках.
  • Поскольку мы используем Count в Excel, то же самое можно увидеть и при применении Count Function в VBA.
  • Процесс применения VBA Count также может быть выполнен путем перекодирования макроса.
  • Всегда сохраняйте написанный код в VBA в Macro, включите формат файла Excel, чтобы избежать потери кода.

Рекомендуемые статьи

Это руководство к графу VBA. Здесь мы обсудим, как использовать функцию подсчета Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Читайте также: