基準に基づいて値をリストする

基準に基づいて値をリストする

ワークシートに「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

添付資料参照ワークブック- C12に変更してみてください

名前が(指定された基準内で)繰り返される場合、名前が繰り返されます。式を調整して、各名前を1回だけ表示するようにすることができます。つまり、このバージョンです。

=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

数式を使ったソリューションが必要な場合は、下部に空白ができます。リストの変更に合わせて数式を含むセルを拡大したり縮小したりすることはできません。数式を含むテーブルは、生データと同じ高さにする必要があります。そうすることで、たとえば、すべてのユーザーが列 を持っている場合に何も見逃さないようにできます1Bそのようなことが起こらないことがわかっている場合は、ワークシートの行数を減らすことができますが、リスクがあります。以下に、すべてを順番に返して下部に空白を残す数式を示します。これは配列数式なので、 + +Listで入力します。(Barry Houdini がすでに同様のソリューションを提出しています)CtrlShiftEnter

{=IFERROR(INDEX(DealSetup!$A:$A,SMALL(IF(DealSetup!$B:$B=1,ROW(DealSetup!$B:$B)),ROW())),"")}

下部に空白が許容されない場合は、ピボットテーブルまたは VBA ソリューションを使用する必要があります。この質問はかなり古いため、残念ながら、OP がすぐにここに戻ってくるとは思えません。

関連情報