我想在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