Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/сравнение 2 х файлов по определенным столбцам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
сравнение 2 х файлов по определенным столбцам
NICK31 Дата: Вторник, 22.05.2012, 15:55 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

у нас есть 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, А ЕСЛИ ДАННЫХ НЕТ ПО ЭТОМУ КЛИЕНТУ, ТО НИЧЕГО НЕ ПРОИСХОДИТ, ПОЛЯ НИЧЕМ НЕ ЗАПОЛНЯЮТСЯ
К сообщению приложен файл: 6042204.rar (14.2 Kb)
 
Ответить
Сообщениеу нас есть 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
Дата добавления - 22.05.2012 в 15:55
Hugo Дата: Вторник, 22.05.2012, 16:12 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
NICK31, я Вам не предлагал уже http://www.excelworld.ru/index/comparefiles_find/0-25 ?
В общем, именно так и работает.
На Ваших файлах не проверял - слишком много настроек забивать smile
Но бесплатно только 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" - получается, что все эти значения должны быть одинаковые? Или не так?
Или запутался? В общем, Вам виднее...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеNICK31, я Вам не предлагал уже http://www.excelworld.ru/index/comparefiles_find/0-25 ?
В общем, именно так и работает.
На Ваших файлах не проверял - слишком много настроек забивать smile
Но бесплатно только 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
Дата добавления - 22.05.2012 в 16:12
NICK31 Дата: Вторник, 22.05.2012, 16:15 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

не ну тут сравнение 2х файлов по 2 условиям! и при совпадении заполняются данные из файла в определенные столбцы! я просто не знаю, как код написать, но саму суть понимаю!
 
Ответить
Сообщениене ну тут сравнение 2х файлов по 2 условиям! и при совпадении заполняются данные из файла в определенные столбцы! я просто не знаю, как код написать, но саму суть понимаю!

Автор - NICK31
Дата добавления - 22.05.2012 в 16:15
Hugo Дата: Вторник, 22.05.2012, 16:33 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Ну так я Вам и предлагаю "сравнение 2х файлов по 2 условиям" или больше, и копирование кучи ячеек в кучу.
Код конечно написать можно, но готовое думаю будет дешевле. И универсальнее.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу так я Вам и предлагаю "сравнение 2х файлов по 2 условиям" или больше, и копирование кучи ячеек в кучу.
Код конечно написать можно, но готовое думаю будет дешевле. И универсальнее.

Автор - Hugo
Дата добавления - 22.05.2012 в 16:33
RAN Дата: Вторник, 22.05.2012, 16:37 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[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.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[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
Дата добавления - 22.05.2012 в 16:37
NICK31 Дата: Вторник, 22.05.2012, 16:44 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, файл 2 раза запускать не надо! там может и быть, что плательщик и получатель в одном лице, поэтому копируются данные с одной строчки!
 
Ответить
СообщениеHugo, файл 2 раза запускать не надо! там может и быть, что плательщик и получатель в одном лице, поэтому копируются данные с одной строчки!

Автор - NICK31
Дата добавления - 22.05.2012 в 16:44
NICK31 Дата: Вторник, 22.05.2012, 16:47 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Зачем сперва "U-W", затем уже "U-N" и "W-R" - получается...отвечаю...у нас могут быть плательщик и получатель разные, вот если счет и бик совпал с файлом "реквизиты" то копируем нужные данные, куда я прописал!
 
Ответить
СообщениеЗачем сперва "U-W", затем уже "U-N" и "W-R" - получается...отвечаю...у нас могут быть плательщик и получатель разные, вот если счет и бик совпал с файлом "реквизиты" то копируем нужные данные, куда я прописал!

Автор - NICK31
Дата добавления - 22.05.2012 в 16:47
NICK31 Дата: Вторник, 22.05.2012, 16:49 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

мне то нужен потом файл списание в эксель и потом у меня другой макрос будет еще на основании этого, который готов уже..
 
Ответить
Сообщениемне то нужен потом файл списание в эксель и потом у меня другой макрос будет еще на основании этого, который готов уже..

Автор - NICK31
Дата добавления - 22.05.2012 в 16:49
Hugo Дата: Вторник, 22.05.2012, 16:53 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Ну так попробуйте внимательно прописать все ячейки в параметрах и посмотреть, что получится.
Может быть сперва потренируйтесь на нерабочей машине - когда попытки выйдут, перейдёте на рабочую smile
А потом может быть договоримся smile

Да, только сразу предупреждаю - если в фалах десятки тысяч строк - будет долго.
Я писал код для себя - у меня больше 3000 строк редко бывает...
Если больше - тогда нужно спецкод на массивах писать. Но как сказал RAN - мартышкин труд не воодушевляет. Даже за деньги.
Другое дело когда для себя... чтоб вдвойне мартышкин не делать sad


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу так попробуйте внимательно прописать все ячейки в параметрах и посмотреть, что получится.
Может быть сперва потренируйтесь на нерабочей машине - когда попытки выйдут, перейдёте на рабочую smile
А потом может быть договоримся smile

Да, только сразу предупреждаю - если в фалах десятки тысяч строк - будет долго.
Я писал код для себя - у меня больше 3000 строк редко бывает...
Если больше - тогда нужно спецкод на массивах писать. Но как сказал RAN - мартышкин труд не воодушевляет. Даже за деньги.
Другое дело когда для себя... чтоб вдвойне мартышкин не делать sad

Автор - Hugo
Дата добавления - 22.05.2012 в 16:53
NICK31 Дата: Вторник, 22.05.2012, 17:01 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

я понимаю конечно, когда для себя! а где суть мартышкиной работы? прописывать сравнение или что?
 
Ответить
Сообщениея понимаю конечно, когда для себя! а где суть мартышкиной работы? прописывать сравнение или что?

Автор - NICK31
Дата добавления - 22.05.2012 в 17:01
Hugo Дата: Вторник, 22.05.2012, 17:09 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Да.
В макросе нужно прописать все пары значений.
В принципе, можете взять за основу макрос Андрея и продолжить.
Там подразумевается, что код в файле реквизиты.xls
Циклы вероятно нужно сделать подлиннее и динамическими.
Но код неоптимален, мой даже побыстрее вероятно будет (т.к. делает похожее, но с помощью поиска).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДа.
В макросе нужно прописать все пары значений.
В принципе, можете взять за основу макрос Андрея и продолжить.
Там подразумевается, что код в файле реквизиты.xls
Циклы вероятно нужно сделать подлиннее и динамическими.
Но код неоптимален, мой даже побыстрее вероятно будет (т.к. делает похожее, но с помощью поиска).

Автор - Hugo
Дата добавления - 22.05.2012 в 17:09
NICK31 Дата: Вторник, 22.05.2012, 17:33 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

мда...не знаю, что и делать...
 
Ответить
Сообщениемда...не знаю, что и делать...

Автор - NICK31
Дата добавления - 22.05.2012 в 17:33
RAN Дата: Вторник, 22.05.2012, 18:00 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Hugo, я и не ставил задачу оптимизировать. Я показал направление.
Есть желание у человека делать - пусть начинает, подскажем.
Нет? ну на нет...(деньги есть...) biggrin


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеHugo, я и не ставил задачу оптимизировать. Я показал направление.
Есть желание у человека делать - пусть начинает, подскажем.
Нет? ну на нет...(деньги есть...) biggrin

Автор - RAN
Дата добавления - 22.05.2012 в 18:00
NICK31 Дата: Вторник, 22.05.2012, 18:06 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

[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
[/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
[/vba]
ТАК?

Автор - NICK31
Дата добавления - 22.05.2012 в 18:06
Hugo Дата: Вторник, 22.05.2012, 18:12 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Неа...
[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]

И смотрите не ошибитесь! smile
Все .Cells - это в Workbooks("списание.xls").Sheets(1)
Они приравниваются (т.е. им присваивается значение) к второму файлу, в котором макрос.
Вернее к ячейкам активного в этот момент листа - какой это файл, не важно. По задаче подразумевается, что активным является второй файл и нужный лист.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНеа...
[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]

И смотрите не ошибитесь! smile
Все .Cells - это в Workbooks("списание.xls").Sheets(1)
Они приравниваются (т.е. им присваивается значение) к второму файлу, в котором макрос.
Вернее к ячейкам активного в этот момент листа - какой это файл, не важно. По задаче подразумевается, что активным является второй файл и нужный лист.

Автор - Hugo
Дата добавления - 22.05.2012 в 18:12
NICK31 Дата: Вторник, 22.05.2012, 18:19 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

[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 копируется в 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 копируется в BI

Автор - NICK31
Дата добавления - 22.05.2012 в 18:19
Hugo Дата: Вторник, 22.05.2012, 18:23 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Ну примерно так. Буквы напутали smile
Копруется из правой половины в левую, да.

Dim wb1 As Workbook
в этом куске кода не используется, лишнее.

И обрамляйте код тегами, когда постите - приятнее смотреть.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу примерно так. Буквы напутали smile
Копруется из правой половины в левую, да.

Dim wb1 As Workbook
в этом куске кода не используется, лишнее.

И обрамляйте код тегами, когда постите - приятнее смотреть.

Автор - Hugo
Дата добавления - 22.05.2012 в 18:23
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!