Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2010, 15:59   #1
Snake_
Новичок
Джуниор
 
Регистрация: 28.08.2010
Сообщений: 4
По умолчанию Excel -скрипт сравнения двух файлов и копирования данных из одного в другой

Народ!помогите плиз написать скрипт:
Есть 2 файла X и Y
В файле X есть 3 столбца: D(столбец с фамилиями),E(столбец с именами),F(столбец с отчеством),всего 1925 строк.
В файле Y есть 3 аналогичных столбца:A(столбец с фамилиями),B(столбец с именами),C(столбец с отчеством),всего 1842 строки
Необходимое условие сравнения - совпадение данных файлов X и Y (ФИО) во всех трех столбцах одной строки. Если совпадение происходит,то с файла Y происходит копирование данных соответствующей совпавшей строки:
1)содержимое столбца D файла Y копируется в столбец С файла X
2)содержимое столбца F файла Y копируется в столбец AF файла X
3)содержимое столбца H файла Y копируется в столбец AD файла X
4)содержимое столбца J файла Y копируется в столбец AC файла X

Заранее благодарен!

Последний раз редактировалось Snake_; 28.08.2010 в 21:36.
Snake_ вне форума Ответить с цитированием
Старый 28.08.2010, 16:25   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

будет файл-будет и скрипт.Тренироваться на чем?
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.08.2010, 18:02   #3
Snake_
Новичок
Джуниор
 
Регистрация: 28.08.2010
Сообщений: 4
По умолчанию

Скину начальные части файлов,остальное если нужно будет добавлю
Вложения
Тип файла: rar База БСМП.rar (563.6 Кб, 24 просмотров)
Snake_ вне форума Ответить с цитированием
Старый 28.08.2010, 18:17   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Snake_ Посмотреть сообщение
3)содержимое столбца J файла Y копируется в столбец AC файла X
Вместо AC, наверное, должно быть AB (вроде, лишний столбец)?
nilem вне форума Ответить с цитированием
Старый 28.08.2010, 19:22   #5
Snake_
Новичок
Джуниор
 
Регистрация: 28.08.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Вместо AC, наверное, должно быть AB (вроде, лишний столбец)?
нет,именно АС
Snake_ вне форума Ответить с цитированием
Старый 28.08.2010, 21:37   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот Вам инструмент: http://hugo.nxt.ru/CompareFiles.Find.rar , как раз для таких задач и делал.
В настройках пишите что сравнивать, куда копировать.

Да вот они, проверил, 17 совпадений:

Файл - приёмник: c:\Temp\Snake_\X.xls
Файл - источник: c:\Temp\Snake_\Y.xls
Столбцы сравнения в приёмнике: d,e,f
Столбцы сравнения в источнике: a,b,c
Лист - приёмник (№): 1
Лист - источник (№): 1
Столбцы - приёмники данных копирования: c,af,ad,ac
Столбцы - источники данных копирования: d,f,h,j
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.08.2010 в 21:43.
Hugo121 вне форума Ответить с цитированием
Старый 28.08.2010, 21:47   #7
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Давайте попробуем без массивов, словарей и пр.
PHP код:
Option Explicit
Option Compare Text

Sub UpdateRecords
()
Dim wb As Workbook
Dim i 
As IntegerAs IntegerAs Integer
Dim LRx 
As IntegerLRy As Integer
'Dim tm As Single
'
tm Timer
Application
.ScreenUpdating False

Set wb 
GetObject(ThisWorkbook.Path "\Y.xls")
With wb.Sheets("SPISOK")
LRx Cells(Rows.Count4).End(xlUp).Row
LRy 
= .Cells(Rows.Count1).End(xlUp).Row

For 2 To LRx
    
For 2 To LRy
        
If Cells(i4) = .Cells(j1) And _
                Cells
(i5) = .Cells(j2) And _
                        Cells
(i6) = .Cells(j3Then
        Cells
(i3) = .Cells(j4): Cells(i32) = .Cells(j6)
        
Cells(i30) = .Cells(j8): Cells(i29) = .Cells(j10)
        
1: Exit For
        
End If
    
Next jNext i
End With
wb
.Close False
Application
.ScreenUpdating True
'MsgBox Timer - tm
MsgBox "Обновлено записей: " & k, vbInformation, "Обновление"
End Sub 
Оба файла должны быть в одной папке. Запускаем из файла Х по зеленой стрелке.
P.S. По 2000 строк в обоих файлах - затрачено 3,09 сек.
Вложения
Тип файла: rar X.rar (37.3 Кб, 55 просмотров)

Последний раз редактировалось nilem; 28.08.2010 в 22:05.
nilem вне форума Ответить с цитированием
Старый 28.08.2010, 22:16   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Вот Вам инструмент
Ошибка, запрещеная закачка...
Что не так?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 28.08.2010, 22:19   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Заходите браузером - там промежуточное звено - почтовый сервер.

Т.е. копируйте ссылку в адресную строку.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.08.2010, 22:31   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Hugo121
Спасибо, забрал кое-как и только через ИЕ ))
Посмотрим, что за "зверь"
p.s.
А почему бы Вам не прикрепить Ваш файлик прямо к сообщению, было бы намного проще.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос данных из одного фала в другой. tae1980 Microsoft Office Excel 1 03.11.2009 12:16
Перенос данных из одного листа в другой Светланка85 Microsoft Office Excel 2 07.09.2009 09:18
Перенос данных с одного листа в другой Josser Microsoft Office Excel 0 17.07.2009 10:45
Как написать программу для копирования с одного сайта новости на другой? AquaKlaster Работа с сетью в Delphi 2 14.07.2009 16:53