2016-06-08 39 views
1

我試圖找到一種方法,從陣列獲取多個值在一個單元想從索引陣列中多個值到一個單元格在Excel

說來顯示,比如我有兩列,下面

b 2

的C 1

d 3

e 2的

我希望所有的值形成第一列,其中第2欄是1

VLOOKUP和索引與匹配兩者僅提供所述第一匹配的實例,有一種方法與一個函數來做到這還是必須使用VBA創建宏?

感謝

+0

這是一個真實的實際情況問題。 – skkakkar

回答

0

考慮你的數據在範圍內A1:B5Cell C1包含你正在尋找的數量。

Cell D1中輸入以下數組公式,並向下拖動/複製直到根據需要排。

=IFERROR(INDEX($A$1:$A$5, SMALL(IF($C$1=$B$1:$B$5, ROW($B$1:$B$5)-MIN(ROW($B$1:$B$5))+1, ""), ROW(A1))), "") 

作爲一個數組公式,你必須通過按Ctrl鍵++輸入提交上述公式。

enter image description here

+0

本質上與帶匹配的索引相同,它仍然只返回一個值,如果它是所需的值,那麼它就會返回。我正在尋找的是這樣一種方式:使用這個數據集,如果搜索的值是兩個,則返回be。 –

+0

@MarcL - 如果你拖下公式,它會給出預期的結果。 – Mrig

+0

@MarcL - 或者你想要在同一個單元格中的所有結果? – Mrig

1

如果你希望所有的結果,在一個單元中顯示,你可以使用VBA公式:

'r is the range of cells that you have a value to look for 
'v is the value you are looking for 
Function getValues(r As Range, v As Variant) 

Dim c As Range 

getValues = "" 

For Each c In r 
If c.Value = v Then 
    If getValues = "" Then 
     'Offset(0,-1) will give you value from previous coulmn 
     getValues = c.Offset(0, -1).Value 
    Else 
     getValues = getValues & "," & c.Offset(0, -1).Value 
    End If 
End If 
Next c 

End Function 

使用例如:在單元格C1中輸入驗證=getValues(B1:B5,1)

enter image description here

+0

我假設您知道如何進入此代碼轉換爲VBA編輯器... –

+0

謝謝,非常有用的一點代碼,儘管我希望避免vba路由,因爲我想稍後將其轉換爲Google表格,並且至少大部分內置函數不需要重新編程!仍然,現在非常有用。 –

+0

是的,我知道如何使用VBA編輯器 - 我廣泛編程在Excel和Access中的VBA –

0

僅使用公式就可以使用幫助器列。

enter image description here

公式:

D1

="" 

D2向下:

=IF(B2=$B$1,D1&A2&", ",D1) 

C1

=LEFT(LOOKUP(2,1/(D:D<>0),D:D),LEN(LOOKUP(2,1/(D:D<>0),D:D))-2) 
相關問題