Задача получения значения для каждого контрагента посредством анализа файлов и автозаполнения ячеек. Пример на одном из контрагентов: Есть Шишов А.В. файл Общие расчёты, ячейка I5 Декабрь 2018 не заполнена.
Скрытый текст
Макрос, скрипт или что то ещё сканирует папку с файлами
Скрытый текст
Находит файл Оплаты за декабрь 18 в нём находи Шишкова и сумму по начислению
Скрытый текст
Далее это значение копирует Шишов А.В. файл Общие расчёты, ячейка I5 Декабрь 2018
P.S.: Возможно переименовать названия файлов и сделаю единую стилизацию чтобы транспортировка данных была успешной.
encomos, вам намекают, что с картинками работать невозможно, надо выкладывать файлы примеров. С ходу бросается в глаза, что в одной таблице - Шишов, а в другой - Шишов Александр Вадимович. И что-то мне подсказывает, что на идентичные названия одной сущности нет даже намека. Поверьте, при таком подходе будет очень сложно работать.
encomos, по примеру составил макрос, может не самый оптимальный, но с задачей справляется. Однако надо понимать, что с реальными файлами ситуация может пойти не так радостно, в первую очередь из разнородной организации данных в файлах и различных наименований одного и того же объекта. Поэтому, в любом случае придется самостоятельно во всем этом деле разбираться и доводить до ума.
Код
Sub Отчет()
Dim ПоследняяСтрокаОбщий As Long
Dim ПоследняяСтрокаОтчет As Long
Dim ПоследнийСтолбец As Long
Dim СтрокаОбщий As Long
Dim СтрокаОтчет As Long
Dim Столбец As Long
Dim ПутьКФайлу As String
Dim НазваниеФайла As String
Dim ОбщийФайл As Worksheet
Dim Отчет As Worksheet
Set ОбщийФайл = ThisWorkbook.Worksheets(1)
ПутьКФайлу = ThisWorkbook.Path & "\"
ПоследнийСтолбец = ОбщийФайл.Cells.SpecialCells(xlLastCell).Column
ПоследняяСтрокаОбщий = ОбщийФайл.Cells.SpecialCells(xlLastCell).Row
For Столбец = 3 To ПоследнийСтолбец
'Название файла формируюется из месяца и года в заголовках начиная с третьего столбца. Все названия отчетных файло должны быть вид "ммгггг"
'Все отчетные файлы находятся в той же папке, что и общий файл
НазваниеФайла = Format(DatePart("m", Cells(1, Столбец)), "00") & DatePart("yyyy", Cells(1, Столбец))
НазваниеФайла = ПутьКФайлу & НазваниеФайла
If Dir(НазваниеФайла & "*") <> "" Then
НазваниеФайла = Dir(НазваниеФайла & "*")
Set Отчет = Workbooks.Open(ПутьКФайлу & НазваниеФайла).Worksheets(1)
ПоследняяСтрокаОтчет = Отчет.Cells.SpecialCells(xlLastCell).Row
СтрокаОбщий = 2
Do While СтрокаОбщий <> ПоследняяСтрокаОбщий + 1
СтрокаОтчет = 2
Do While СтрокаОтчет <> ПоследняяСтрокаОтчет + 1
'Наименование в общем и отчетном файлах начинается со второй строки первого столбца
If Отчет.Cells(СтрокаОтчет, 1) = ОбщийФайл.Cells(СтрокаОбщий, 1) Then
'Суммы в отчетных файлах находятся в третьем столбце
ОбщийФайл.Cells(СтрокаОбщий, Столбец) = Отчет.Cells(СтрокаОтчет, 3)
СтрокаОтчет = СтрокаОтчет + 1
Exit Do
End If
СтрокаОтчет = СтрокаОтчет + 1
Loop
СтрокаОбщий = СтрокаОбщий + 1
Loop
ActiveWorkbook.Close (False)
End If
Next
End Sub
Valo написал: Однако надо понимать, что с реальными файлами ситуация может пойти не так радостно, в первую очередь из разнородной организации данных в файлах и различных наименований одного и того же объекта.
Большое спасибо за точку отсчёта с неё и начну. И за макрос тоже спасибо.