- ベストアンサー
横方向のデータを表示するには
- VLOOKUP関数を使用して、左側のデータを認識して、その行のデータを表示する方法について試しています。
- 左側にある同じ名称の先頭行のデータが他の同じ名称の部分にも反映されてしまう問題が発生しています。
- 指定した列を基準にしてデータを検索し、該当するデータを返すVLOOKUP関数を使用しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
元のデータはSheet1のA1から(表題も合わせて)入力されているとしています。 Sheet2のセルE2に「エアコン」と入力し、 A2、B2、C2以下に検索結果を出します。 セルA2 =IF(COUNTIF(Sheet1!$A$1:$A$13,$E$2)<ROW(A2)-1,"",INDEX(Sheet1!$A$1:$A$13,SUMPRODUCT(SMALL((Sheet1!$A$1:$A$13=$E$2)*ROW(Sheet1!$A$1:$A$13)+(Sheet1!$A$1:$A$13<>$E$2)*9999,ROW(A2)-1)),)) セルB2 =IF(COUNTIF(Sheet1!$A$1:$A$13,$E$2)<ROW(A2)-1,"",INDEX(Sheet1!$B$1:$B$13,SUMPRODUCT(SMALL((Sheet1!$A$1:$A$13=$E$2)*ROW(Sheet1!$A$1:$A$13)+(Sheet1!$A$1:$A$13<>$E$2)*9999,ROW(A2)-1)),)) セルC2 =IF(COUNTIF(Sheet1!$A$1:$A$13,$E$2)<ROW(A2)-1,"",INDEX(Sheet1!$C$1:$C$13,SUMPRODUCT(SMALL((Sheet1!$A$1:$A$13=$E$2)*ROW(Sheet1!$A$1:$A$13)+(Sheet1!$A$1:$A$13<>$E$2)*9999,ROW(A2)-1)),)) 下にコピーしてください。 セルB2、C2の算式は、A2の算式のINDEXの次の$A$1:$A$13をB列、C列に変えただけです。
その他の回答 (2)
- MackyNo1
- ベストアンサー率53% (1521/2850)
I2セルに検索品名が入力されているなら、E2セルに以下の式を入力して右方向および下方向にオートフィルコピーしてください。 =INDEX(A:A,SMALL(INDEX(($A$2:$A$100<>$I$2)*1000+ROW($A$2:$A$100),),ROW(1:1)))&"" ただし、上記の数式ではG列の値段の数字が「文字列数字」になっていますので、この部分を通常の数字にしたいなら、以下のような数式に変更してください。 =IF(E2="","",INDEX(C:C,SMALL(INDEX(($A$2:$A$100<>$I$2)*1000+ROW($A$2:$A$100),),ROW(1:1))))
お礼
無事解決出来ました。 ご対応有難うございます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
上の元リストと下の表示したいリストの関係がよくわかりません。 ご希望の操作は、上のリストの重複のない組み合わせのデータだけのリストを作成したいということでしょうか? その場合は、データタブの「詳細設定」で抽出先を指定して「重複するレコードは無視する」にチェックをいれてOKしてください。 ご質問の意味が上記の回答と違う場合は、上のリストと下のリストの関係を(または下のリストを修正して)説明しなおして補足説明して下さい。 #Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
補足
下のリスト間違ったリストを掲載してしまいました。 数式も1つ抜けていました。 大変失礼しました。 エクセルのバージョンは、2002と2010を使用しています。 --------------------------------------- 参照基のSheet1 品名 識別コード 値段 テレビ A01 32000 パソコン A02 150000 冷蔵庫 A03 200000 エアコン A04 300000 洗濯機 A05 80000 乾燥機 A06 65000 テレビ A07 150000 パソコン A08 200000 冷蔵庫 A09 250000 エアコン A10 180000 エアコン A11 160000 エアコン A12 210000 ---------------------------------------- 品名 識別コード 値段 検索対象→ エアコン(E2) エアコン A04 300000 エアコン A04 300000 → リストの中にあるエアコンの先頭行のデータが反映されます エアコン A04 300000 → リストの中にあるエアコンの先頭行のデータが反映されます エアコン A04 300000 → リストの中にあるエアコンの先頭行のデータが反映されます 識別コード B2 =IF(A2="", "",VLOOKUP(A2,Sheet1!$A$2:$C$13,2,FALSE)) 値段 C2 =IF(A2="", "",VLOOKUP(A2,Sheet1!$A$2:$C$13,3,FALSE)) 品名 A2 =IF(ROW(A1)>COUNTIF(Sheet1!A:A,$E$2),"",$E$2) 検索対象のセルの中に入っている文字列のエアコンをA2の数式で認識して、A3以降もエアコンの文字列のレコード数を抜き出し、それぞれの識別コードと値段を表示する流れを作成しています。 下記の様に、品名の各行のデータが表示出来ればと思っています。 ご教授宜しくお願い致します。 品名 識別コード 値段 検索対象→ エアコン エアコン A04 300000 エアコン A10 180000 エアコン A11 160000 エアコン A12 210000
お礼
無事解決出来ました。 ご対応して頂き有難うございます。