我想在vlookup
的另一张纸上选择“否”,但我无法使其正常工作。在另一张纸上选择“否”
这是在第一层上的例子:
1 Yes Coffee 2 No Tea 3 No Milk 4 Yes Water 5 Yes Juice
在下表应该显示如下内容:
1 Tea 2 Milk
我想在vlookup
的另一张纸上选择“否”,但我无法使其正常工作。在另一张纸上选择“否”
这是在第一层上的例子:
1 Yes Coffee 2 No Tea 3 No Milk 4 Yes Water 5 Yes Juice
在下表应该显示如下内容:
1 Tea 2 Milk
我不知道,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
是你在例子中给出的数字实际上是在数据中,还是该行?
这是一个非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,并将该行中的值吐出。
我不建议您在不理解的情况下使用它;如果您不熟悉阵列功能,我不建议您使用它。
欢迎来到Stackoverflow。我无法弄清楚你要问你的问题。你是什么意思“选择”否“”?你能提供一个例子还是屏幕截图?你能描述一下你所做的没有奏效吗? – rajah9