2015-07-20 75 views
-2

我想在vlookup的另一张纸上选择“否”,但我无法使其正常工作。在另一张纸上选择“否”

这是在第一层上的例子:

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

在下表应该显示如下内容:

1 Tea 
2 Milk
+2

欢迎来到Stackoverflow。我无法弄清楚你要问你的问题。你是什​​么意思“选择”否“”?你能提供一个例子还是屏幕截图?你能描述一下你所做的没有奏效吗? – rajah9

回答

0

我不知道,VLOOKUP将能够做什么你要。由于您会查找“否”,因此在具有多个“否”的范围内,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 

是你在例子中给出的数字实际上是在数据中,还是该行?

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,并将该行中的值吐出。

我不建议您在不理解的情况下使用它;如果您不熟悉阵列功能,我不建议您使用它。

相关问题