附加列
此解决方案需要包含数据的范围的地址、要比较的范围的两个列号和要添加的列数,即range1中要添加到range2的最后一列的数目。
以前
后
代码
Sub AdditionalColumns()
Const cStr1 As String = "A4:D15" ' First Range
Const cStr2 As String = "A21:H28" ' Second Range
Const cIntCol1 As Integer = 2 ' First Compare Column
Const cIntCol2 As Integer = 3 ' Second Compare Column
Const cIntAdd As Integer = 4 ' Additional Columns
Dim vnt1 As Variant ' First Array
Dim vnt2 As Variant ' Second Array
Dim vntTarget As Variant ' Target Array
Dim i As Long ' First Array Row Counter
Dim j As Long ' Second Array Row Counter
Dim k As Long ' Target Array Column Counter
With ThisWorkbook.Worksheets("Sheet1")
vnt1 = .Range(cStr1)
vnt2 = .Range(cStr2)
ReDim vntTarget(1 To UBound(vnt1), 1 To cIntAdd)
For i = 1 To UBound(vnt1)
For j = 1 To UBound(vnt2)
If vnt1(i, cIntCol1) = vnt2(j, cIntCol1) Then
If vnt1(i, cIntCol2) = vnt2(j, cIntCol2) Then
For k = 1 To cIntAdd
vntTarget(i, k) = vnt2(j, k + UBound(vnt1, 2))
Next
Exit For
End If
End If
Next
Next
.Cells(.Range(cStr1).Row, .Range(cStr1).Columns.Count _
+ .Range(cStr1).Column) _
.Resize(UBound(vntTarget), UBound(vntTarget, 2)) = vntTarget
End With
End Sub