选择“不”'在另一张纸上

时间:2015-07-20 12:47:47

标签: excel

我想选择' no'在vlookup的单独表格上,但我无法让它发挥作用。

这是第一张纸上的示例:

1 Yes  Coffee
2 No   Tea
3 No   Milk
4 Yes  Water
5 Yes  Juice

在下一张表格中,它应显示以下内容:

1 Tea
2 Milk

2 个答案:

答案 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列,并吐出给定行中的值。

我不建议您在不理解的情况下使用它;如果您不熟悉数组函数,我建议您不要使用它。