у нас есть 2 файла "списание" и "реквизиты"! Нужно создать макрос, чтобы при сравнении столбцов по реквизитам из файла "реквизиты" данные копировались в файл "списание" по определенным столбцам! Например если бик банка столбца U файла "реквизиты" совпадает с бик банком столбца Y "списание" и № счета столбца W файла "реквизиты" совпадает с № счета столбца U "списания", то данные файла "реквизиты" B,C,D,E,F,G,H копируются в файл "списание" по столбцу C,D,E,F,G,H,I. Данные V копируются в AV, данные I,J,K,L,M,N,O,P,Q,R,S,T копируются в AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU соответственно. Затем если U совпадает с N и W совпадает с R, то данные копируются с B,C,D,E,F,G,H в AC,AD,AE,AF,AG,AH,AI после V копируется в BI и I,J,K,L,M,N,O,P,Q,R,S,T, КОПИРУЕТСЯ В AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH, А ЕСЛИ ДАННЫХ НЕТ ПО ЭТОМУ КЛИЕНТУ, ТО НИЧЕГО НЕ ПРОИСХОДИТ, ПОЛЯ НИЧЕМ НЕ ЗАПОЛНЯЮТСЯ
у нас есть 2 файла "списание" и "реквизиты"! Нужно создать макрос, чтобы при сравнении столбцов по реквизитам из файла "реквизиты" данные копировались в файл "списание" по определенным столбцам! Например если бик банка столбца U файла "реквизиты" совпадает с бик банком столбца Y "списание" и № счета столбца W файла "реквизиты" совпадает с № счета столбца U "списания", то данные файла "реквизиты" B,C,D,E,F,G,H копируются в файл "списание" по столбцу C,D,E,F,G,H,I. Данные V копируются в AV, данные I,J,K,L,M,N,O,P,Q,R,S,T копируются в AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU соответственно. Затем если U совпадает с N и W совпадает с R, то данные копируются с B,C,D,E,F,G,H в AC,AD,AE,AF,AG,AH,AI после V копируется в BI и I,J,K,L,M,N,O,P,Q,R,S,T, КОПИРУЕТСЯ В AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH, А ЕСЛИ ДАННЫХ НЕТ ПО ЭТОМУ КЛИЕНТУ, ТО НИЧЕГО НЕ ПРОИСХОДИТ, ПОЛЯ НИЧЕМ НЕ ЗАПОЛНЯЮТСЯNICK31
NICK31, я Вам не предлагал уже http://www.excelworld.ru/index/comparefiles_find/0-25 ? В общем, именно так и работает. На Ваших файлах не проверял - слишком много настроек забивать Но бесплатно только 15 запусков.
Первую часть проверил:
Файл - приёмник: D:\TMP\Nick31\списание.xls Файл - источник: D:\TMP\Nick31\реквизиты.xls Столбцы сравнения в приёмнике: y,u Столбцы сравнения в источнике: u,w Лист - приёмник (№): 1 Лист - источник (№): 1 Столбцы - приёмники данных копирования: C,D,E,F,G,H,I,av,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU Столбцы - источники данных копирования: B,C,D,E,F,G,H,v,I,J,K,L,M,N,O,P,Q,R,S,T
1 совпадение. Как я понимаю, затем файл нужно сохранить и запускать проверку ещё раз, а может быть можно сразу всё настроить - не знаю, запутался. Зачем сперва "U-W", затем уже "U-N" и "W-R" - получается, что все эти значения должны быть одинаковые? Или не так? Или запутался? В общем, Вам виднее...
NICK31, я Вам не предлагал уже http://www.excelworld.ru/index/comparefiles_find/0-25 ? В общем, именно так и работает. На Ваших файлах не проверял - слишком много настроек забивать Но бесплатно только 15 запусков.
Первую часть проверил:
Файл - приёмник: D:\TMP\Nick31\списание.xls Файл - источник: D:\TMP\Nick31\реквизиты.xls Столбцы сравнения в приёмнике: y,u Столбцы сравнения в источнике: u,w Лист - приёмник (№): 1 Лист - источник (№): 1 Столбцы - приёмники данных копирования: C,D,E,F,G,H,I,av,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU Столбцы - источники данных копирования: B,C,D,E,F,G,H,v,I,J,K,L,M,N,O,P,Q,R,S,T
1 совпадение. Как я понимаю, затем файл нужно сохранить и запускать проверку ещё раз, а может быть можно сразу всё настроить - не знаю, запутался. Зачем сперва "U-W", затем уже "U-N" и "W-R" - получается, что все эти значения должны быть одинаковые? Или не так? Или запутался? В общем, Вам виднее...Hugo
не ну тут сравнение 2х файлов по 2 условиям! и при совпадении заполняются данные из файла в определенные столбцы! я просто не знаю, как код написать, но саму суть понимаю!
не ну тут сравнение 2х файлов по 2 условиям! и при совпадении заполняются данные из файла в определенные столбцы! я просто не знаю, как код написать, но саму суть понимаю!NICK31
Ну так я Вам и предлагаю "сравнение 2х файлов по 2 условиям" или больше, и копирование кучи ячеек в кучу. Код конечно написать можно, но готовое думаю будет дешевле. И универсальнее.
Ну так я Вам и предлагаю "сравнение 2х файлов по 2 условиям" или больше, и копирование кучи ячеек в кучу. Код конечно написать можно, но готовое думаю будет дешевле. И универсальнее.Hugo
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") End If Next Next End With End Sub
[/vba] А все остальное - скучная мартышкина работа часа на 3.
[vba]
Code
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") End If Next Next End With End Sub
[/vba] А все остальное - скучная мартышкина работа часа на 3.RAN
Зачем сперва "U-W", затем уже "U-N" и "W-R" - получается...отвечаю...у нас могут быть плательщик и получатель разные, вот если счет и бик совпал с файлом "реквизиты" то копируем нужные данные, куда я прописал!
Зачем сперва "U-W", затем уже "U-N" и "W-R" - получается...отвечаю...у нас могут быть плательщик и получатель разные, вот если счет и бик совпал с файлом "реквизиты" то копируем нужные данные, куда я прописал!NICK31
Ну так попробуйте внимательно прописать все ячейки в параметрах и посмотреть, что получится. Может быть сперва потренируйтесь на нерабочей машине - когда попытки выйдут, перейдёте на рабочую А потом может быть договоримся
Да, только сразу предупреждаю - если в фалах десятки тысяч строк - будет долго. Я писал код для себя - у меня больше 3000 строк редко бывает... Если больше - тогда нужно спецкод на массивах писать. Но как сказал RAN - мартышкин труд не воодушевляет. Даже за деньги. Другое дело когда для себя... чтоб вдвойне мартышкин не делать
Ну так попробуйте внимательно прописать все ячейки в параметрах и посмотреть, что получится. Может быть сперва потренируйтесь на нерабочей машине - когда попытки выйдут, перейдёте на рабочую А потом может быть договоримся
Да, только сразу предупреждаю - если в фалах десятки тысяч строк - будет долго. Я писал код для себя - у меня больше 3000 строк редко бывает... Если больше - тогда нужно спецкод на массивах писать. Но как сказал RAN - мартышкин труд не воодушевляет. Даже за деньги. Другое дело когда для себя... чтоб вдвойне мартышкин не делать Hugo
Да. В макросе нужно прописать все пары значений. В принципе, можете взять за основу макрос Андрея и продолжить. Там подразумевается, что код в файле реквизиты.xls Циклы вероятно нужно сделать подлиннее и динамическими. Но код неоптимален, мой даже побыстрее вероятно будет (т.к. делает похожее, но с помощью поиска).
Да. В макросе нужно прописать все пары значений. В принципе, можете взять за основу макрос Андрея и продолжить. Там подразумевается, что код в файле реквизиты.xls Циклы вероятно нужно сделать подлиннее и динамическими. Но код неоптимален, мой даже побыстрее вероятно будет (т.к. делает похожее, но с помощью поиска).Hugo
Hugo, я и не ставил задачу оптимизировать. Я показал направление. Есть желание у человека делать - пусть начинает, подскажем. Нет? ну на нет...(деньги есть...)
Hugo, я и не ставил задачу оптимизировать. Я показал направление. Есть желание у человека делать - пусть начинает, подскажем. Нет? ну на нет...(деньги есть...) RAN
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") and .Cells(j, "D") = Cells(i, "C") and .Cells(j, "E") = Cells(i, "D") End If Next Next End With End Sub
[/vba] ТАК?
[vba]
Code
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") and .Cells(j, "D") = Cells(i, "C") and .Cells(j, "E") = Cells(i, "D") End If Next Next End With End Sub
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") .Cells(j, "D") = Cells(i, "C") .Cells(j, "E") = Cells(i, "D") End If Next Next End With End Sub
[/vba]
И смотрите не ошибитесь! Все .Cells - это в Workbooks("списание.xls").Sheets(1) Они приравниваются (т.е. им присваивается значение) к второму файлу, в котором макрос. Вернее к ячейкам активного в этот момент листа - какой это файл, не важно. По задаче подразумевается, что активным является второй файл и нужный лист.
Неа... [vba]
Code
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") .Cells(j, "D") = Cells(i, "C") .Cells(j, "E") = Cells(i, "D") End If Next Next End With End Sub
[/vba]
И смотрите не ошибитесь! Все .Cells - это в Workbooks("списание.xls").Sheets(1) Они приравниваются (т.е. им присваивается значение) к второму файлу, в котором макрос. Вернее к ячейкам активного в этот момент листа - какой это файл, не важно. По задаче подразумевается, что активным является второй файл и нужный лист.Hugo
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") .Cells(j, "D") = Cells(i, "C") .Cells(j, "E") = Cells(i, "D") .Cells(j, "F") = Cells(i, "E") .Cells(j, "G") = Cells(i, "F") .Cells(j, "H") = Cells(i, "G") .Cells(j, "BI") = Cells(i, "V") End If Next Next End With
End Sub
[/vba]это мы копируем как я понимаю данные в строки даных столбцов? если U совпадает с N и W совпадает с R, то данные копируются с B,C,D,E,F,G,H в AC,AD,AE,AF,AG,AH,AI после V копируется в BI
[vba]
Code
Sub qqq() Dim wb1 As Workbook With Workbooks("списание.xls").Sheets(1) For i = 1 To 10 For j = 1 To 20 If Cells(i, "U") = .Cells(j, "N") And Cells(i, "W") = .Cells(j, "R") Then .Cells(j, "C") = Cells(i, "B") .Cells(j, "D") = Cells(i, "C") .Cells(j, "E") = Cells(i, "D") .Cells(j, "F") = Cells(i, "E") .Cells(j, "G") = Cells(i, "F") .Cells(j, "H") = Cells(i, "G") .Cells(j, "BI") = Cells(i, "V") End If Next Next End With
End Sub
[/vba]это мы копируем как я понимаю данные в строки даных столбцов? если U совпадает с N и W совпадает с R, то данные копируются с B,C,D,E,F,G,H в AC,AD,AE,AF,AG,AH,AI после V копируется в BINICK31