我有两张纸:
第1页包含:
第2页包含:
并且输出应显示在Sheet1的M列中。我在这里附加示例输出:
所以,我这里是表1中的ID,例如:ID“ US”有Abhay,Carl和Dev 在Sheet3中,我在列中有名称,在行中有ID。 我想要的是我的“样本输出”列应根据来自Sheet3的匹配值使用宏进行填充
我正在使用以下逻辑,但是出了点问题:
For i = 2 To 10
j = i + 1
If ThisWorkbook.Sheets("Input").Range("N" & i) = ThisWorkbook.Sheets("Sheet3").Range("A" & i) And ThisWorkbook.Sheets("Input").Range("K" & i) = ThisWorkbook.Sheets("Sheet3").Range("B1") Then
ThisWorkbook.Sheets("Input").Range("O" & i) = ThisWorkbook.Sheets("Sheet3").Range("B" & j)
End If
Next i
答案 0 :(得分:0)
由于您要求使用VBA解决方案,请参见下面的代码。
Dim colLen As Integer
Dim i As Integer
Dim colPt As Integer
Dim rowPt As Integer
' Counts number of rows on Sheet 1, column B.
colLen = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
' Loops through all names on Sheet 1.
For i = 2 To colLen
' Retain US or NA ID for blank cells.
If Sheets(1).Cells(i, 1) <> "" Then
If Sheets(1).Cells(i, 1) = "US" Then
colPt = 2
Else
colPt = 3
End If
End If
' Find name on Sheet 2 and set row.
rowPt = Sheets(2).Range("A:A").Find(Sheets(1).Cells(i, 2)).Row
' Add ID from Sheet 2 to Sheet 3
Sheets(1).Cells(i, 3) = Sheets(2).Cells(rowPt, colPt)
Next i
假设:
我建议在每行中都包含ID,而不是将其视为标题,但这是首选。如果您想跳过VBA,也可以使用一些公式解决方案。
答案 1 :(得分:0)
有几种方法可以解决此问题。以下是其中之一:
注意:为简单起见,我将数据保存在一张纸上。您可以修改以下公式,因为您的数据在2页上。话虽如此,我使用的查询列与您的查询相同
解决方案:
有一个“保留栏” 。在我的示例中,我使用列%p
作为保留列(如果需要,可以隐藏此列)。在J
中,键入以下公式:J2
。将公式向下复制到所有使用的行。然后在=IF(ISBLANK($K2), $J1,$K2)
中复制以下公式:M2
。如前所述,将公式复制到所有使用的行中。这应该给您您的结果