2015-07-20 63 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,並將該行中的值吐出。

我不建議您在不理解的情況下使用它;如果您不熟悉陣列功能,我不建議您使用它。

相關問題