
我的工作表上有一個名為「DealSetup」的表格,看起來像是這個簡化版本:
A B
1 John Doe 1
2 Jane Doe 1
3 Mark Doe 2
4 Doug Doe 1
5 Mary Doe 2
我的工作表上有一個名為「List」的表格,我想將名稱從「DealSetup」工作表中提取出來。但是,我只想根據 B 列中的值列出名稱。
例如,在「List」工作表上,我想使用某種 INDEX 或某種陣列函數來尋找「DealSetup」工作表並拉出 B 列值為 1 的每個人並列出它們。不過,我不要任何空白。它應該看起來像這樣:
EVERYONE WITH B COLUMN VALUE OF 1:
A
1 John Doe
2 Jane Doe
3 Doug Doe
或者像這樣:
EVERYONE WITH B COLUMN VALUE OF 2:
A
1 Mark Doe
2 Mary Doe
我一直在嘗試一些事情但沒有運氣。不知道從這裡去哪裡,所以任何意見將不勝感激!
答案1
假設您的數據DealSetup!A$2:B$6
可以在中使用此公式List!A2
=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1),ROWS(A$2:A2))),"")
CTRL使用+ SHIFT+確認ENTER並根據需要向下複製。當你用完名字時,你會得到空白。
假設標準(1,2 等)C1
請參閱附件作業簿- 嘗試更改C1
為2
如果名稱重複(在指定條件內),那麼您將得到重複的名稱 - 可以調整公式以僅顯示每個名稱一次,即此版本
=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,IF(COUNTIF(A$1:A1,DealSetup!A$2:A$6)=0,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1)),1)),"")
答案2
如果你想要一個有公式的解決方案,那麼底部會有空白。無法讓包含公式的儲存格隨著清單的變化而增加和縮小。包含公式的表格應該與原始資料具有相同的高度,以確保您不會錯過任何內容,例如,每個人都有一個1
in 列B
。如果您知道永遠不會出現這種情況,則可以減少工作表中的行數List
,但這存在風險。下面的公式將按順序傳回所有內容,底部留有空白。這是一個陣列公式,所以用Ctrl+ Shift+輸入Enter:(Barry Houdini 已經提交了類似的解決方案)
{=IFERROR(INDEX(DealSetup!$A:$A,SMALL(IF(DealSetup!$B:$B=1,ROW(DealSetup!$B:$B)),ROW())),"")}
如果您無法接受底部的空白,則它必須是資料透視表或 VBA 解決方案。這個問題已經很老了,所以不幸的是,我不希望很快看到OP回到這裡。