Новости:

Из правил форума: Тема должна отражать суть вопроса, топики типа "help please" будут удаляться!

Главное меню

Свод из несовпадающих полями таблиц

Автор WaleryN, 11.11.2013, 09:41

« назад - далее »

WaleryN

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

Можно ли сделать, так что бы сводная таблица распознавала наличие новой строки и добавляла ее в свод?
А при отсутствии не суммировала...

Есть еще вариант выгрузки отчета XML, но это для меня темный лес!!!

если что то файлы для примера во вложении

Poltava

Вообще не понял что вам нужно!
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

WaleryN

Нужно сделать свод 127 формы (они приложены в файле)

Poltava

Тут по вашему все бухгалтерией занимаются? Мне ваши слова ни о чем не говорят! что за форма где находиться по каким правилам заполнять откуда брать данные что должно быть в результате?
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

WaleryN

в общем есть 7 таблиц эксель, мне нужно из них данные объеденить сложением...
например есть строки в эксель файлах, в первых скобочках это допустим номер строки в экселе, т.е. строки взяты из разных листов эксель
(5)"|Заработная плата|901|0104|002|15|00|120|211|80000,00|80000,00|7000,00|7000,00" (1 орг)
(5)"|Заработная плата|901|0104|002|15|00|120|211|80000,00|80000,00|7000,00|7000,00" (2 орг)
(6)"|Заработная плата|901|0104|002|15|00|120|211|80000,00|80000,00|7000,00|7000,00" (3 орг)
в своде эта строка примет следующий вид
(6)"|Заработная плата|901|0104|002|15|00|120|211|240000,00|240000,00|21000,00|21000,00" (3 орг)

примечание ...|Заработная плата|901|0104|002|15|00|120|211|... это название расхода и его код
вот в файлах источниках может отличаться как номер строки так и код расхода

для примера файлы приложены в архиве

там лежит файл СВОД, я в ручную копировал листы из файлов источников в СВОД и добавлял не достающие строки...
нашел на просторах интернета вот такое решение «Прайс лист» - программа объединения и обработки прайс листов http://excelvba.ru/programmes/Unification но это в VBA а хотелось ресурсами эксель

Poltava

Цитироватьэто в VBA а хотелось ресурсами эксель
VBA это и есть самый мощный инструмент excel :) ну а теперь по делу.
Цитироватьв файлах источниках может отличаться как номер строки так и код расхода
Гм ну если со строкой допустим понятно то как Вы простите определяете что это одна статья если у нее могут быть разные коды ???
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

WaleryN

 :-[ извините, видать от работы зарапортовался, консолидировать мне нужно по кодам расходов...
допустим код расхода
Прочие расходы       901   0503   600   01   00   830   290

Прочие расходы       901   0113   092   00   01   244   290

Это значит два разных расхода
Меня этот момент не пугает.
Пугает что в одной организации в этом месяце есть этот вид расхода а в другой нет
И когда консолидирую таблицы хотелось что бы ексель понимал что появилась новый вид расхода и добавил для него строку...
К моему стыду я не разу не пользовался VBA и не знаю что это такое

WaleryN

Доп вопрос, как заставить файл СВОД.xls автоматически собирать данные из 1.xls, 2.xls, 3.xls, 4.xls в этой же директории?
известно что в каждом файле (источнике) одна страница.
может исходя из этого условия определюсь что делать дальше.... ???

WaleryN

#8
Задачу поставил из рук вон плохо...
По пробую объяснить на простом примере.
Бухгалтера приносят мне эксель файлы в которых в табличной части указано примерно так
Файл 1-й
1.   Помидоры      код 1     10кг
2.   Яблоки          код 2     20кг
3.   Мандарины    код 3     15 кг
Файл 2-й
1.   Помидоры      код 1     40кг
2.   Яблоки          код 2     10кг
3.   Яблоки          код 4     30кг
4.   Мандарины    код 3     15 кг
Файл 3-й
1.   Яблоки          код 4     25кг
2.   Мандарины    код 3     15 кг
3.   Мандарины    код 5       5 кг

Я должен сделать свод этих файлов
1.   Помидоры      код 1      50кг
2.   Яблоки          код 2      30кг
3.   Яблоки          код 4      55кг
4.   Мандарины    код 3      45 кг
5.   Мандарины    код 5       5 кг

Простым суммированием работу не автоматизировать, но вот хочется, что бы когда свод заберет данные из файлов, Он суммировал с учетом кода. т.е. яблоки код 2 и яблоки код 4 слаживал отдельно, и если в таблице нет соответствующей строки с кодом, то добавлял ее исходя из источника данных (файла)

Если эту задачу нужно делать в VBA, то подскажите как?

РС как в свод собрать данные из отдельных файлов нашел (макрос)
в своде появляются листы по именам файлов

kuklp

Т.е. Вам в файле СВОД из поста №4 нужно консолидировать  Расходы бюджета со всех листов на общий?
Цитироватькак в свод собрать данные из отдельных файлов нашел
Должен заметить, что такая форма данных может и хороша для отчетов, но совсем непригодна для обработки.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

WaleryN

#10
Да.

ПС С сбором данных косяк

как сделать чтобы имена файлов источников были буквенные ?

вот макрос

Sub Собрать из файлов()
Dim t As String

For i = 1 To 7

t = i
If GetWorksheetByName(t) = "" Then
Sheets.Add.Name = i
Else
Sheets(t).Select
Cells.Delete Shift:=xlUp
shCopy t
End If
Next

End Sub

Function shCopy(sh As String) ' открыть нужный файл и копирвать и закрыть его
On Error Resume Next
ChDir ThisWorkbook.Path
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & sh & ".xls"
If Err Then GoTo metka1
Cells.Select
Selection.Copy
Windows(ThisWorkbook.Name).Activate
Sheets(sh).Select
ActiveSheet.Paste
Windows(sh & ".xls").Close False
Range("A1").Select
metka1:
Err.Clear
End Function

Function GetWorksheetByName(ByRef shName As String) As String 'проверка наличия листа
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
If shName = sht.Name Then
GetWorksheetByName = sht.Name
Exit For
Else
GetWorksheetByName = ""
End If
Next sht
End Function

WaleryN

и не получается прикрутить кнопку к этому макросу  :'(

в общем смех да и только....  :D ;D

Poltava

Не вижу смысла собирать все листы в одну книгу! если их будет много то вам надоест между ними переключаться либо просто запутаетесь в ссылках. Загружайте данные в массивы и с ними уже работайте
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

kuklp

#13
Данные со всех файлов в папке суммируются на итоговый лист. Только данные по расходам. Листы не копируются. Структура отчетов д.б. одинаковой, данные начинаются с 29 строки. Открываем файл СВОД, жмем кнопку. Дальше ваши проблемы.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

WaleryN

#14
KukLP спасибо! Но как это у Вас получилось? жаль, что не знаю VBA.

Я все еще размышляю про разную структуру отчетов...
возможно, ли прописать такое условие? -
допустим, формула в ячейке ищет номера в диапазоне с 28D-28J по  63D-63J
если совпало, то копирует или суммирует ячейки строки диапазона $K-$R

пример - ячейка 28К (свод) проверяет в файле источнике столбцы E,F,G,H,I,J
при совпадении данных столбцов со строкой копирует данные из строки совпавшей, в строки СВОДа 28 K,L,M,N,O,P,R

ПС
Вот еще одна идея!!!
Файлы источники данных приводить в соответствии с шаблоном (СВОД)
А потом уже и ребенок сведет ;)
Но это тоже, наверное, должен быть макрос, который «берет» файл источник добавляет недостающие строки, сравнивая с шаблоном, и сохраняет файл источник.