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

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

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

基点となる左側に有るデータを認識して、その行のデータを表示する方法について、VLOOKUP関数を使用して試していますが、左側に有る同じ名称の先頭行のデータが他の同じ名称の部分にも反映されてしまいます。 左側の名称が同じでも、他のデータは違います。 関数は、以下の関数を使用しています。 識別コード B2 =IF(A2="", "",VLOOKUP(A2,Sheet1!$A$2:$C$13,2,FALSE)) 値段 C2 =IF(A2="", "",VLOOKUP(A2,Sheet1!$A$2:$C$13,3,FALSE)) 品名    識別コード    値段 テレビ     A01    32000 パソコン     A02    150000 冷蔵庫     A03     200000 エアコン     A04    300000 洗濯機     A05    80000 乾燥機     A06    65000 テレビ     A01    32000 パソコン     A02    150000 冷蔵庫     A03    200000 エアコン     A04    300000 エアコン     A04    300000 エアコン     A04    300000 上記の状態から、下記の様に表示出来ればと思っています。 ご教授宜しくお願い致します。 品名    識別コード    値段 テレビ    A01        32000 パソコン    A02         150000 冷蔵庫    A03        200000 エアコン    A04        300000 洗濯機    A05        80000 乾燥機    A06       65000 テレビ    A07       150000 パソコン    A08       200000 冷蔵庫    A09       250000 エアコン    A10   180000 エアコン    A11      160000 エアコン    A12      210000

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

  • ベストアンサー
  • 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

  • VLOOKUP関数について

    VLOOKUP関数についての疑問なのですが、 ...........A...............B 1..品名コード|.品名..| 2..A123...........|..お茶.| 3..A456...........|...水....| 4..A789...........|..お酒.| というデータがあったとします。 VLOOKUP関数を使用して、 このデータから 品名コードを入力して品名を検索することは できるのですが、品名を入力して品名コードを検索できません。 データのA列とB列の位置を入れ替えれば検索が可能になりますが…。 VLOOKUP関数は検索するキーのデータが一番左側にないと機能しないのでしょうか? どなたかご教授お願いいたします。

  • VLOOKUP関数のエラーについて

    ExcelでVLOOKUP関数を使って表を作成しようと思っています。コードを入力することによって、品名を表示させるようにしたいのですが、今までVLOOKUP関数は使ったことがないので、練習用として簡単な表を作成しました。コードはアルファベットA~Eと、数字1~5を使っています。コードが数字の場合は品名が正しく表示され、アルファベットの場合はAだけがエラーとなります。別の表で試したところ、やはりコードがAのものだけがエラーになります。なぜAがエラーになるのか理由がわかりません。 何が原因なのか、どうすれば正しく表示されるのかを教えていただきたく、よろしくお願いいたします。

  • EXCELの表作成について

    EXCELについて質問です。 表Aと表Bから表Cのような結果を出すためには、 どうすれば良いでしょうか? 下記の例ではたいしたデータではありませんが、 膨大な数のデータがあるとして、関数などEXCELの機能を活用して簡単に 結果を出したいと思っています。 【表A】 A    B     C    D 1     A店 B店 C店 2 パソコン 3 掃除機 4 冷蔵庫 5 テレビ 【表B】 A店   B店   C店 パソコン パソコン パソコン 掃除機  冷蔵庫  掃除機 冷蔵庫  テレビ  テレビ 【表C】 A    B    C    D 1     A店 B店 C店 2 パソコン ○ ○  ○ 3 掃除機  ○    ○ 4 冷蔵庫  ○ ○ 5 テレビ     ○  ○ ※表A内で、表Bに該当する箇所に"○"が記入されます。 ※1~5はEXCELの行 ※A~DはEXCELの列 当方、EXCELは使い慣れていいますので、 多少難しい方法でも構いません。 (ややこしい関数の組み合わせも理論さえ理解すれば大丈夫です) どなたか分かる方がいましたら、 よろしくお願い致します。

  • お願い!EXCELでデータ抽出したい 

    EXCELでデータを抽出したいです。 コード 内容 A111  りんご A222  みかん A333  ばなな A444 なし A555 かき といったデータから コード  内容 A222  みかん A333  ばなな というように内容を取り出したいのです。 vlookup関数では、内容をコピーしたときに、 数式がコピーされ、内容がコピーされません。 どなたか助けて下さい。

  • ACCESS で、存在しないデータも表示させたい(?)

    こんにちは。すみません、タイトルが日本語的に変ですね(汗) ACCESS 2000 初心者です。 商品CODE表 1 2 3 に対し、 売上9月 1 … 100 3 … 50 売上10月 2 … 30 3 … 70 というデータがあったとします。 これを単純に、選択クエリで結びつけると、 CODE 9月 10月 3   50  70 とだけ表示しますね。 下記のように CODE 9月 10月  1  100   0  2   0   30  3  50   70 表示させることはできますか? EXCELでVLOOKUP した場合、#N/A 等で表示してくれますよね。そしたら ISERROR 関数などで0表示するのですが。。 ACCESS はイメージが掴めなくて困っています。ヒントをください。

  • リンク表示を消したいのです。

    エクセルの表で、他の名称の表からデーターの内容をリンクしています。 エクセルをオープンした際、下記の内容のリンクメッセージが出てしまいます。 このメッセージを出さないようには出来ませんでしょうか? 例えばA1のセルには次のような関数を入れております。 =IF(D25="","",VLOOKUP(D25,[製品DATA.xls]製品データ!1:65536,2,0))

  • EXCEL VLOOKUPで数字データの読み取りが出来ません

    VLOOKUPの使い方で質問があります。 現在、2枚のエクセルのシートを使用しています。 1枚目のフォーマット(品番を入れると、品名や単位などのデータが自動表示されるような設定のもの)に、VLOOKUPの式を入れてあり、元データを2枚目に保存してあります。 一枚目のフォーマット上で品番を入力すると、自動的に2枚目の元データから適合する商品を抜き出し、その品番に対応する商品名・単位などが表示される仕組みです。 1枚目のフォーマットで使用しているVLOOKUPの式に間違いは無く、2枚目の元データ(品番・品名・単位の3列、1000行程度)も関数に引っかかるよう、品番を昇順に並べ替えてあります。 でも、一枚目に品番を入力しても、元データから品名・単位といった他のデータを持ってこないんです。 問題は、2枚目の元データの中の品番(関数で結びつける部分)にあるようです。 そのままだとまったく引っかからないにもかかわらず、元データの品番部分を一行一行選択し、ENTERを押すと、VLOOKUPの関数に引っかかるようになるんです。 ※ENTERを押すと、一瞬画面の左下に「再計算0%」との表示が出て、すぐに消えます。 ちなみに元データはアクセスからエクセルに出力したものです。 どなたか、これを解決する方法ご存知でしょうか? 一行づつENTERを押すにはあまりにも多いデータ数なので困っています。 また、私はエクセルの初心者で、難しい用語はまったくわかりません。出来ればわかりやすい方法で教えていただきたいのですが… どなたかよろしくお願いします。

  • エクセルで項目ごとに集計する方法

    エクセル2003を使用しています。 下のような表があるとします。(Aに品名、Bに個数) テレビ   10   冷蔵庫   10 テレビ    5  ・     ・  ・     ・ この表から品名ごとの集計、たとえばテレビ○個、冷蔵庫○個、・・・ をする方法を教えてください。 データの数は1000件弱、品名もかなりの個数があるので、表の中から自動で品名を抽出できないかと考えています。 よろしくお願いします。

  • 20万円の意味?

    昔からずっと疑問なんですが、今も昔もまともに使える製品の値段が大抵20万円なんです。(パソコンやテレビやエアコンや冷蔵庫や洗濯機など) 物価も変わってるのになんで20万円に落ち着くんでしょうか? ずっと疑問です。

  • VLOOKUP関数 空白表示の出し方

    VLOOKUP関数を使いたいんですけれど、エラーが出でしまいます。 コード  金額 102   1980 103   2500  105   980 という表で コード番号が飛んでいて何番が無いのかわからないデータ量なんです コード番号をVLOOKUPで拾って行きたいのですが番号が無いとエラー表示になってしまいます。コード番号がない場合は空白又は”-”で表示する方法はどうすればよいでしょうか?

専門家に質問してみよう