• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:横方向のデータを表示するには)

横方向のデータを表示するには

このQ&Aのポイント
  • VLOOKUP関数を使用して、左側のデータを認識して、その行のデータを表示する方法について試しています。
  • 左側にある同じ名称の先頭行のデータが他の同じ名称の部分にも反映されてしまう問題が発生しています。
  • 指定した列を基準にしてデータを検索し、該当するデータを返すVLOOKUP関数を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

元のデータは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列に変えただけです。

1968masaru
質問者

お礼

無事解決出来ました。 ご対応して頂き有難うございます。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

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))))

1968masaru
質問者

お礼

無事解決出来ました。 ご対応有難うございます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

上の元リストと下の表示したいリストの関係がよくわかりません。 ご希望の操作は、上のリストの重複のない組み合わせのデータだけのリストを作成したいということでしょうか? その場合は、データタブの「詳細設定」で抽出先を指定して「重複するレコードは無視する」にチェックをいれてOKしてください。 ご質問の意味が上記の回答と違う場合は、上のリストと下のリストの関係を(または下のリストを修正して)説明しなおして補足説明して下さい。 #Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。

1968masaru
質問者

補足

下のリスト間違ったリストを掲載してしまいました。 数式も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

関連するQ&A