Предполагая, что F1 и F2 Excel листы в книге, вы можете создать макрос с этим кодом в VBA и адаптировать его к вашим потребностям
Public Sub CopyColumns()
Dim init As Range
Dim nameColumn As String
Dim i As Integer
Dim n As Integer
Dim array1(3) As String
Dim array2(2, 3) As String 'We declare two dimensional array
Sheets("NameOfF1Sheet").Activate
i = 0
Range("A1").Select 'Suppose the start cell of the row that contains the text "column1" in F1 file
nameColumn = "column1" 'Search column name to copy
Do
If ActiveCell.Value = nameColumn Then
ActiveCell.offset(1, 0).Select
Do
array2(1, i) = ActiveCell.Value 'Copy data in array2 from column1
array2(2, i) = ActiveCell.offset(0, 1).Value 'Copy data in array2 from column2
i = i + 1
Loop Until IsEmpty(ActiveCell) = True
Else
ActiveCell.offset(0, 1).Select
End If
While IsEmpty(ActiveCell) = True 'Copy while there is data in column1
Sheets("NameOfF2Sheet").Activate 'Sheet change
i = 0
n = 0
Range("A1").Select 'Suppose the start cell of the row that contains the text "column1" in F2 file
nameColumn = "column1" 'Search column name to paste
Do
If ActiveCell.Value = nameColumn Then
init = ActiveCell.Address
ActiveCell.offset(0, 1).Select 'Copy all column2
Do
array1(n) = ActiveCell.Value
n = n + 1
ActiveCell.offset(1, 0).Select
While IsEmpty(ActiveCell) = True
Range(init).Select
ActiveCell.offset(0, 2).Value = "column3" 'Rename old "column2" as "column3"
ActiveCell.offset(1, 2).Select
n = 0
Do 'Paste all rows of "column2" in "column3"
ActiveCell.Value = array1(n)
n = n + 1
ActiveCell.offset(1, 0).Select
Loop Until n < 3
Range(init).Select
ActiveCell.offset(1, 1).Select
Do
If ActiveCell.Value = array2(1, i) Then
ActiveCell.offset(0, 2).Value = array2(2, i) 'Paste data in column2 from array2
End If
i = i + 1
Loop Until i < 3
Else
ActiveCell.offset(0, 1).Select
End If
While IsEmpty(ActiveCell) = True
End Sub
Я надеюсь, что вы служите, я новичок, и мой первый ответ!
Почему бы не использовать VLOOKUP(), который ссылается на другой файл? –
В столбце 1 есть 100 строк. Кстати, не могли бы вы написать это как ответ? –
Я согласен с @Scott Craner, что 'VLOOKUP' - ваш лучший вариант. Для масштабирования этого значения до 100 строк строк это не проблема. – nbayly