根據標準列出值

根據標準列出值

我的工作表上有一個名為「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

如果你想要一個有公式的解決方案,那麼底部會有空白。無法讓包含公式的儲存格隨著清單的變化而增加和縮小。包含公式的表格應該與原始資料具有相同的高度,以確保您不會錯過任何內容,例如,每個人都有一個1in 列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回到這裡。

相關內容