Страницы: 1
RSS
Подсчет количества позиций по всем файлам Excel в корневой папке
 
Не знаю возможно ли это вообще физически...
Цель какая: есть большое количество файлов Excel (для примера прикладываю три, но при реальном использовании скрипта количество обрабатываемых файлов может превышать 200), эти файлы фактически сметы, и мне нужен крипт (таблица), который при запуске в корневом каталоге со всеми этими сметами создаст список файлов, покажет количество позиций по каждой смете (не количество строк, а именно позиций), и в конце выдаст итог сколько всего количество пронумерованых строк по всем сметам. Это реализуемо?
Изменено: bikeza - 11.02.2020 15:42:06
 
bikeza, написала
Цитата
не количество строк, а именно позиций
Вы бы привели пример файла и показали нам эти позиции, которые надо подсчитывать.
 
Цитата
Kuzmich написал:
показали нам эти позиции, которые надо подсчитывать
файлы для примера я привел, выкладываю повторно, подсветил желтым позиции, количество которых в каждом файле нужно посчитать
 
bikeza,
Вы бы привели пример файла, в который собираетесь вытягивать эти позиции из файлов-смет.
На примере ваших трех файлов
 
Чем отличается
Цитата
количество позиций по каждой смете
от
Цитата
количество пронумерованых строк
:qstn:
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
Kuzmich написал:
Вы бы привели пример файла
Прикладываю, я это вижу примерно так
Цитата
Alemox написал:
Чем отличается
да ничем, просто пытался одно и тоже объяснить другими словами
 
bikeza,
Почему в смете 11527 такие странные порядковые номера?
Можете ли все сметы поместить в одну директорию, чтобы можно
было их обработать в цикле?
 
bikeza, вариант на Power Query.

На листе source указываете путь к папке со сметами, нажимаете Данные -> Обновить все. На листе result увидите результат.
 
Цитата
Murderface_ написал:
На листе result увидите результат
Получается белиберда
 
Похоже мои вопросы проигнорировали - всего доброго!
 
Цитата
Kuzmich написал:
Почему в смете 11527 такие странные порядковые номера?
такое иногда бывает, к сожалению это никак не отследить, так как смет сотни и в каждой сотни позиций
Цитата
Kuzmich написал:
Можете ли все сметы поместить в одну директорию, чтобы можно было их обработать в цикле?
так и задумывалось, все сметы в одной директории. выгрузить все сметы не могу, так как их очень много, и в каждой есть данные не подлежащие разглашению. сколько нужно смет для проработки?
Цитата
Kuzmich написал:
Похоже мои вопросы проигнорировали
Прошу прощения, проглядел
 
bikeza,
Цитата
такое иногда бывает, к сожалению это никак не отследить, так как смет сотни и в каждой сотни позиций
К сожалению, именно на подсчете порядковых номеров в виде чисел в столбце А смет можно было посчитать количество позиций по каждой смете
 
Цитата
bikeza написал:
сколько нужно смет для проработки?
Еще несколько штук, вдруг найдется какая-либо система в этом хаосе, за которую можно зацепиться и просчитать.
Замените мазут на апельсины и т. п., если что-то там конфиденциальное.
 
Цитата
bikeza написал:
Получается белиберда
Конечно. На листе source вы путь не указали + вывод у вас почему то не на листе result а на другом листе. С телефона больше ничего увидеть не могу. Но на тех 3х сметах, которые вы приложили, все работает. Сам отчёт лучше не помещать в папку, где лежат сметы.
Изменено: Murderface_ - 14.02.2020 21:45:50
 
Цитата
bikeza написал:
Это реализуемо?
Точность реализации зависит от количества (полноты) исходной информации, чтобы можно было уловить алгоритм, по которому можно посчитать требуемое. Раз не реагируете на предложение добавить примеров, получайте вариант решения только на основе имеющихся файлов.
И вообще, если Вам интересно решение проблемы и есть желание получить помощь, нужно как-то реагировать и не бросать созданную Вами тему.
Скрытый текст

Файл положить в папку со сметами (других файлов xlsx там быть не должно!) и запустить кнопку.
Изменено: aequit - 15.02.2020 19:47:50 (Удал файл с ошибкой. Исправленная версия ниже.)
 
Цитата
aequit написал:
Еще несколько штук, вдруг найдется какая-либо система в этом хаосе, за которую можно зацепиться и просчитать.
Прикладываю приложить не могу, больше 100кб, вот ссылка
Цитата
Murderface_ написал:
На листе source вы путь не указали + вывод у вас почему то не на листе result а на другом листе
Ошибку понял, теперь получилось, однако не все считает правильно, есть ошибки. Файл с результатами также есть в архиве
Цитата
aequit написал:
получайте вариант решения только на основе имеющихся файлов
Скрин ошибки приложил

Цитата
aequit написал:
(других файлов xlsx там быть не должно!)
ошибка при запуске макроса (см.скрин). Других - это каких? Не смет? Кроме смет файлов не было
Цитата
Murderface_ написал:
На листе result увидите результат.
Сейчас этот вариант самый работоспособный, но хотелось упростить задачу. Как минимум - не вбивать путь к сметам вручную, ну или иметь что то типа кнопки "Обзор". Так же таблица не выдает результат "Итого", приходится считать самостоятельно. Но если это самый работоспособный вариант - это просто замечательно!
Изменено: bikeza - 15.02.2020 17:12:16
 
Если порядковые номера будут в виде чисел в столбце А , то макрос в файл Свод
В диалоговом окне выберите папку со сметами
Код
Sub SborFromFolder()
Dim FileName As String
Dim iPath As String
Dim Wb As Object
Dim CurWb As Worksheet
Dim iLR As Long
Dim n As Integer
    Application.ScreenUpdating = False
    Set CurWb = ThisWorkbook.Worksheets("Лист1")
    Rows("4:" & Rows.Count).Clear
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку со сметами": .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        iPath = .SelectedItems(1) & "\"
    End With
    FileName = Dir(iPath & "*.xls*")
      n = 1
    Do While FileName <> ""
     Set Wb = Workbooks.Open(iPath & FileName)
       iLR = CurWb.Cells(CurWb.Rows.Count, "A").End(xlUp).Row + 1
       CurWb.Cells(iLR, "A") = n
       CurWb.Cells(iLR, "B") = Split(Wb.Name, ".")(0)
       CurWb.Cells(iLR, "C") = Application.CountIf(Columns(1), ">0") - 1
        Wb.Close: FileName = Dir
        n = n + 1
    Loop
      iLR = Cells(Rows.Count, "A").End(xlUp).Row
      Range("A4:C" & iLR).Borders.Weight = xlThin
      Cells(iLR + 2, "B") = "Итого:"
      Cells(iLR + 2, "C") = WorksheetFunction.Sum(Range("C4:C" & iLR))
End Sub
 
Цитата
bikeza написал:
ошибка при запуске макроса (см.скрин). Других - это каких? Не смет? Кроме смет файлов не было
Извиняюсь, лишнее нажатие клавиши по время вставки комментария. Поправил.
Скрытый текст


P.s. Проверил все сметы из нового архива. Мой алгоритм отработал и посчитал всё корректно. В коде добавил выравнивание в ячейках и подбор ширины (несущественно, на результат не влияет). При том треше, что творится в Ваших файлах (после пункта 1 в нумерации идет пункт 12 или вообще буквы "О" и др.), вполне возможно, что есть в других сметах нечто иное, что может вызвать ошибку в подсчетах. Если при тестировании такой файл проявится, можете приложить его в этой теме или создать новую, подумаем, что можно сделать...
В присланном Вами архиве есть файл "Свод PQ.xlsx", его в папке со сметами быть не должно. Если этой папке будет другой файл, отличный от сметы, при его открытии появится ошибка, так как обработка ошибок в процедуре не сделана (можно добавить при необходимости). Также нетрудно добавить возможность выбора папки со сметами. В текущем варианте файл "Свод.xlsm" нужно просто положить в папку со сметами и нажать на единственную кнопку. Должен появиться такой результат (на скриншоте).
При тестировании обратите внимание на результаты обработки смет: "11527-Д", "55362 Изм.1" и "55454 изм .2 ОТОПЛЕНИЕ", на наличие итоговой суммы и её корректность, а также на полноту имен файлов (смет) в таблице.
Изменено: aequit - 15.02.2020 19:43:56 (Исправления, добавил результаты тестирования.)
 
Цитата
bikeza написал:
однако не все считает правильно, есть ошибки
Скажите названия смет из вашего архива, по которым неверно считает.
Страницы: 1
Наверх