Вечер добрый, необходима помощь.
Есть 2 файла с большим количеством строк, шапки разные за исключением столбца А.
Необходимо сделать сравнение по столбцу А на наличие одинаковых записей и копировать их в файл 3 в виде
Столбцы А, B и С из файла 1, далее в столбец D копировать столбец С из файла 2, в столбец E столбец G из файла 2.
Файлы для примера прикрепил.
Много где читал, мне показалось, что лучше всего подходит для такого решения Powershell?(в котором так же мало соображаю как и в VB)
Из моих попыток скрипт на VB, немного переделал под себя(но это не совсем то, что нужно.)
Есть 2 файла с большим количеством строк, шапки разные за исключением столбца А.
Необходимо сделать сравнение по столбцу А на наличие одинаковых записей и копировать их в файл 3 в виде
Столбцы А, B и С из файла 1, далее в столбец D копировать столбец С из файла 2, в столбец E столбец G из файла 2.
Файлы для примера прикрепил.
Много где читал, мне показалось, что лучше всего подходит для такого решения Powershell?(в котором так же мало соображаю как и в VB)
Из моих попыток скрипт на VB, немного переделал под себя(но это не совсем то, что нужно.)
Код |
---|
Sub test() On Error Resume Next: Application.ScreenUpdating = False Dim sh1 As Worksheet: Set sh1 = Worksheets(1) Dim sh2 As Worksheet: Set sh2 = Worksheets(2) Dim sh3 As Worksheet: Set sh3 = Worksheets(3) sh3.UsedRange.Clear ' очистка листа от прежних данных Dim cell As Range, ra As Range, ForCopy As Range ' перебираем все заполненные ячейки в столбце Е Set ra = sh1.Range([e1], Range("e" & sh1.Rows.Count).End(xlUp)).SpecialCells(xlCellTypeConstants) For Each cell In ra.Cells If Not sh2.Range("a:a").Find(cell) Is Nothing Then ' если аналогичный номер есть в столбце А If ForCopy Is Nothing Then Set ForCopy = cell Else Set ForCopy = Union(ForCopy, cell) If ForCopy.Cells.Count > 1000 Then ForCopy.EntireRow.Copy sh3.Range("a" & sh3.Rows.Count).End(xlUp).Offset(1) Set ForCopy = Nothing End If End If Next cell ForCopy.EntireRow.Copy sh3.Range("a" & sh3.Rows.Count).End(xlUp).Offset(1) sh3.UsedRange.EntireColumn.AutoFit: sh3.Rows(1).Delete sh3.Activate End Sub |