我有一个奇怪的问题,希望有人能帮助我。我在 A 列中有一个项目列表,在 D 列中有一个项目列表。这些大多是相同的,B列中只有更多的项目。
Column A Column B Column C Column D
1015 1015 $25 $5
1025 1035 $25 $5
1035 1045 $25 $5
1045 1055 $25 $5
好的,所以我想做的是使用 A 列中的项目,然后与 B 列进行比较。
然后我想将行从 B-D 向下移动,以便 D 在 A 旁边并且具有相同的 SKU。
Column A Column B Column C Column D
1015 1015 $25 $5
1025
1035 1035 $25 $5
1045 1045 $25 $5
请帮忙!谢谢!!!
假设 B 列中不存在不匹配的值。
对于VBA解决方案,请尝试以下操作:
Sub MatchRows()
Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets("Sheet1")
'First Column
Dim rngA As Range
Set rngA = [A1:A10]
Dim datA As Variant
datA = rngA
Dim i As Long
'Second Column Match
Dim rngB As Range
Set rngB = [B1:B10]
Dim datB As Variant
datB = rngB
Dim j As Long
'Store duplicates
Dim rngString As String
'First Column loop
For i = LBound(datA, 1) To UBound(datA, 1)
'Second Column Loop
For j = LBound(datB, 1) To UBound(datB, 1)
'Check if duplicate
If datA(i, 1) = datB(j, 1) And i <> j And Not IsEmpty(datB(j, 1)) And Not IsEmpty(datA(i, 1)) Then
Dim rng As String
rng = Chr(rngB.Column + 64) & j & ":" & Chr(rngB.Column + 64 + 2) & j
Range(rng).Select
For k = 1 To (i - j)
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next
End If
Next
Next
End Sub
请注意,我对要下推的列数的范围和偏移值 (+2) 进行了硬编码。
假设您的输入在工作表 1 上。然后将新工作表中的以下公式复制到单元格中
A1: =Sheet1!A1
B1: =IFERROR(VLOOKUP(A1;Sheet1!$B$1:$D$4;1;FALSE);"")
C1: =IFERROR(VLOOKUP(A1;Sheet1!$B$1:$D$4;2;FALSE);"")
D1: =IFERROR(VLOOKUP(A1;Sheet1!$B$1:$D$4;3;FALSE);"")
然后将第一行复制到第 2、3 和 4 行。