[[20061213092604]] 『データを検索し表示させるには?』(修行中です) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データを検索し表示させるには?』(修行中です)

 分類コードがあって品名を表示させたいのですが、上手くできません。シート1に
データ一覧があり、シート2のA1に分類コードを入力するとセルA2以下に該当する品名
が一つずつ表示されるようにしたいのですが・・・重複する分類コードを全て拾いあげ
るため、複雑になるのでしょうか?

 シート1のA列にコード B列に品名      
1001 辞  書   
1002 パソコン   
1001 歴 史 書
  1003 工  具
  1002 テ レ ビ
  1001  医 学 書
  シート2のA1に検索
するコード入力し
A2以下に品名表示する 

 オートフィルタを使って、シート1でフィルタをかけて抽出されたB列のデータをシート2A2以下にコピーする…では
ダメ、、なんでしょうねぇ^^;

 データの数により使えないかもしれませんが、こんなのとか。シート2のA2に
=IF(OR(A1="",COUNTIF(シート1!A$2:A$7,A$1)<ROW(A1)),"",INDEX(シート1!B$2:B$7,SMALL(IF(シート1!A$2:A$7=A$1,ROW($1:$6)),ROW(A1))))
として、CtrlとShiftとEnterキーを同時に押して確定してください。
式の両側に{ }がつけば成功です。
そして、必要なだけ、下にコピー。
範囲は実情に併せてください。 
ただし、ROW関数のセル参照は必ず1行目からとし、シート1のデータ範囲の行数分までにしてください。
例:シート1のA3からB100までデータがあるなら、シート1!A$2:A$7 は シート1!A$3:A$100
    シート1!B$2:B$7 は シート1!B$3:B$100、ROW($1:$6) は  ROW($1:$98) に。
(かなれっと)

ご返答ありがとうございます。もしよろしければ
関数の <ROW(A1) のところの意味を教えて
いただければ幸いです。すみません。

 COUNTIF(シート1!A$2:A$7,A$1)<ROW(A1)  ですか?
 シート1A列にあるA1のデータ数を数えて、それが1個より少ないかどうかを判断しています。
 ROW関数は、下にコピーするにつれて1個2個3個…と増えていくので、これがA列にあるA1の
データ数を超えたら数式結果が "" 空白文字列になる仕組みでする。
(かなれっと) 

またまたすみません。よろしければさいごの
INDEX(シート1!B$2:B$7,SMALL(IF(シート1!A$2:A$7=A$1,ROW($1:$6)),ROW(A1))))
の読み方(意味)をご教示くだされば幸いです。

 <ROW(A1)の意味、の部分は上記でよかったんですか?
反応なく次の質問…というのは、かなりめげます。わかったのか否か、足がかりになりそうなのかサッパリなのか、、、、
聞かれて応えたのに、相づちの一つもなかったら寂しいですよ〜

 で、INDEX関数はエクセルのヘルプで確認なさったんですよね?
 シート1のA2からA7のデータのうち、シート2のA1と同じデータに対応する1から6までの
ROW($1:$6) 数値の、1番 ROW(A1) 目に小さい数値(ここまでがSMALL( )の意味)
をINDEX関数の行番号として、シート1のB2からB7のデータから取り出す。です。
 これを下にコピーすることで、ROW(A1)が変化し、2番 ROW(A2) 目に小さい、3番 ROW(A3) 目に小さい…
それぞれのデータを取り出してくれるのです。

 こちらのみやほりんさんの解説がとっても参考になると思いますよ〜
[[20060302144720]]『90より以上の人の名前を抽出したい』(shota)
(かなれっと)


かなれっとさんへ 

反応なしに質問しまして大変失礼いたしました。反省しております・・・
<ROW(A1)の箇所、INDEXとSMALL( )の意味の箇所の丁寧な説明で
大変分かりやすかったです。
また最後の参考のところもご紹介、有難うございます。
繰り返し質問になってしまいましたがよーく勉強していきたいと思います。
またよろしくお願いいたします。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.