列ヘッダー(特定の場所ではない)を列の内容と照合し、すべての行ヘッダーを取得します。

列ヘッダー(特定の場所ではない)を列の内容と照合し、すべての行ヘッダーを取得します。

Windows 8.1 で Excel 2016 を使用しています。

2 つの条件を一致させ、1 つの条件が列ヘッダーであり、もう 1 つの条件がその列内で任意の回数出現する可能性のあるセルの内容であり、結果として複数の行ヘッダーを返すことができるようにしたいと考えています。

私の例では、セル B6 と B7 に果物の名前 (列ヘッダー) と品質 (「良い」または「悪い」) を入力し、その果物と品質に一致する特性 (行ヘッダー) を取得できるようにしたいと考えています。たとえば、「リンゴ」と「良い」を入力すると、「外観」と「風味」が返され (「価格」は返されない) ます。

以前にインデックス マッチを使用したことがあり、セル範囲を操作するために配列数式を使用することも聞いたことがあります。しかし、これらすべてを組み合わせる方法がわかりません。特に、私が見つけたチュートリアルはすべて、行ヘッダーと列ヘッダーを照合して結果のセルを見つける方法に関するものだったためです。さらに、特定の列ヘッダーへの参照を「ハードコード」したくありません。なぜなら、必ずしも「Apples」を照合する必要がないかもしれないからです。

ピボット テーブルを試してみましたが、あまりエレガントではありませんでした (実際のデータには 2 つではなく 5 つの「品質」項目があります)。

サンプルテーブルのスクリーンショット

   A           B         C        D         E        F
1            | Apples | Bananas | Lemons | Mangos | Oranges
-----------------------------------------------------------
2 Appearance | good   | good    | bad    | bad    | good
 ----------------------------------------------------------
3 Flavour    | good   | good    | bad    | good   | good
 ----------------------------------------------------------
4 Price      | bad    | good    | good   | bad    | good
----------------------------------------------------------
5            |        |         |        |        | 
----------------------------------------------------------  
6 Fruit:     | apples |         |        |        |
----------------------------------------------------------
7 Quality:   | good   |         |        |        |             
----------------------------------------------------------
8            |        |         |        |        |     
----------------------------------------------------------  
9 Results:   |        |         |        |        |         
----------------------------------------------------------

答え1

これは @Scott Craner が提案したもののバリエーションですが、うまくいくかもしれません。

列の内容を行のヘッダーに

追加の品質用のプレースホルダーを追加しました。この数式を B11 に入力し、品質の数と同じ数の行を下にドラッグします。

=IF(INDEX($B2:$F2,,MATCH($B$8,$B$1:$F$1))=$B$9,$A2,"")

Results1 の外観が気に入らず、値を 1 つのセルに表示したい場合は、この数式を B18 に入力し、行 11 から 15 を非表示にします。

=IF(B11="","",B11&"//") & IF(B12="","",B12&"//") & IF(B13="","",B13&"//") & IF(B14="","",B14&"//") & IF(B15="","",B15&"//")

「//」の区切り文字として任意の文字を代用します。

答え2

これにより、セルが反復処理され、INDEX に一致するすべての行番号が返され、その後、値が返されます。

これをB9に入力します:

=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$4)/(($B$2:$F$4=$B$7)*($B$1:$F$1=$B$6)),COLUMN(A:A))),"")

そして、すべての特性を考慮できる程度にコピーします。

ここに画像の説明を入力してください

関連情報