我想选择' no'在vlookup
的单独表格上,但我无法让它发挥作用。
这是第一张纸上的示例:
1 Yes Coffee 2 No Tea 3 No Milk 4 Yes Water 5 Yes Juice
在下一张表格中,它应显示以下内容:
1 Tea 2 Milk
答案 0 :(得分:0)
我不知道Vlookup能够做你想做的事。由于您正在查找" No",在多个" No" s的范围内,vLookup将反复返回相同的值。可能有一个方程式的解决方案,但我对那些方法并不是那么好,所以这里是一个VBA解决方案。
注意:我认为"是"和"不"在A列中,饮料类型在B栏中,类似于:
A B
1 Yes Milk
2 No Water
3 No Tea
4 Yes Juice
代码:
Sub Move_NO_Rows()
Dim rawWS As Worksheet, noWS As Worksheet
Dim yesNoRange As Range, cel As Range
Dim lastRow As Integer, noLastRow As Integer
Dim yesOrNo As String
yesOrNo = "No" 'If you want to search for the "Yes" rows instead, just change this variable
Set rawWS = ActiveSheet
Set noWS = Sheets.Add
noWS.Name = "No Types"
'Since we added a new sheet, the starting row for your "No" rows is 1
noLastRow = 1
With rawWS
lastRow = .UsedRange.Rows.Count
Set yesNoRange = .Range(.Cells(1, 1), .Cells(lastRow, 1))
For Each cel In yesNoRange
If cel.Value = yesOrNo Then
noWS.Range(noWS.Cells(noLastRow, 1), noWS.Cells(noLastRow, 2)).Value = .Range(.Cells(cel.Row, 1), .Cells(cel.Row, 2)).Value
noLastRow = noLastRow + 1
End If
Next cel
End With
End Sub
您的示例中的数字实际上是在数据中,还是该行?
答案 1 :(得分:0)
这是一个非VBA解决方案。请注意,这使用了数组公式,每次修改单元格时都必须通过按CTRL + SHIFT + ENTER确认,而不是仅使用ENTER。将A1:A6中的“是”/“否”栏和B1:B6中的饮料栏放入“是”/“否”列。放置D1:D6中的一列,其数量从1到6。
=IFERROR(INDEX($B$1:$B$6,SMALL(IF($A$1:$A$6="no",ROW($A$1:$A$6),""),D1)),"")
按下CTRL + SHIFT + ENTER后,向下复制到下面的行。这通过查看A列中每个可能的命中来工作。如果该行中的列A =“否”,则它将行号提供给SMALL函数。 SMALL采用一组数字,并吐出第n个最小的数字。所以SMALL(LIST,2)给出了列表中第二小的项目。然后,您可以将此行号提供给Index函数,该函数采用B列,并吐出给定行中的值。
我不建议您在不理解的情况下使用它;如果您不熟悉数组函数,我建议您不要使用它。