• ベストアンサー

エクセルの関数で

お世話になります       a       b       c 1    123-3322    りんご     東京 2    342-5534    みかん     静岡 3    439-6754    かき      山口 4    123-3322    なし      広島 5    123-3322    くり      沖縄       a       b       c 1    123-3322    りんご     東京 2    123-3322    なし      広島 3    123-3322    くり      沖縄 のようにd1にa列の検索したい番号を入力して e1にりんごf1に東京というように2.3.4行と 全て摘出したいのです よろしくお願いいたします

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

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.9

こんちは 1) 5つのセルにそれぞれ式をいれてください G1: 0 G2: =G1+H1 H1: =MATCH(D$1,OFFSET(A$1,G1,0,1000-G1,1),0) E1: =IF(NOT(ISERROR($H1)),OFFSET(B$1,$G1+$H1-1,0),"") F1: =IF(NOT(ISERROR($H1)),OFFSET(C$1,$G1+$H1-1,0),"") 2)E1,F1,G2,H1のセルをそれぞれ下方向にコピーしてください。A列のデータ終了位置と同じ列までです 3)G列、H列を非表示にする なおH1 の式の一部の「1000」はA列の件数が最大1000件というのを想定してます。超えるようでしたら変更してください

hajihaji
質問者

お礼

お礼が遅くなりました 思うような事ができました ありがとうございました

その他の回答 (8)

  • saru5
  • ベストアンサー率34% (41/118)
回答No.8

オートフィルタか並べ替えですね。 キーになるA列の数値が複数のBC列の結果を求めるので、関数では無理です。

  • 2v82
  • ベストアンサー率23% (3/13)
回答No.7

#5です。 質問の内容と異なるかもしれませんが、たとえばA列での検索条件に対して、B列(またはC列)のカウントが欲しいというようなことであれば、DCOUNTA関数を使用します。 質問の表をそのまま使用しますので、あとは便宜変更して下さい。 A、B、C列にそれぞれ"番号"、"品名"、"都道府県"という項目名をつけます。 そこで、A1:C6という範囲を"データ"という名前にしましょうか。 8行目に1行目と同じ項目名を入力し、A9にA2:A6でのリスト入力を設定します。そのリストから検索したい番号を表示しておき、B10に次の関数式を入力します。 DCOUNTA(データ,"商品名",A8:C9) たとえばA9で選択した番号が"123-3322"であれば、関数の値は、3となります。 さらに、B9とC9にも検索したい値を入力すれば、番号が"123-3322"で品名が"りんご"、都道府県が"東京"のカウントを取得できます。(この場合、値は1) そのほかにも同様に使用するデータベース関数がありますので、ヘルプを参照して見て下さい。

hajihaji
質問者

お礼

たびたびありがとうございます 私にはちょっと時間がかかりそうなので まずはお礼まで

  • saru5
  • ベストアンサー率34% (41/118)
回答No.6

最初のご質問で、その部分が意味がわからなかったのです。 つまり、A列が同じでもBC列の内容は違う行が存在しているわけですよね? それはデータベースとしては不完全ですので、A列をキーにしての拾い出しはできません。 #2さんの書かれている通り、フィルタを使うのが妥当です。 ACCESSならできますが、EXCELの関数では私の知る限りは無理だと思います。

hajihaji
質問者

補足

ありがとうございます     A   b      d    e     1  111   りんご   111   りんご 2  115   かき         くり 3  111   くり         すいか 4  196   なし         もも 5  111   すいか        めろん 6  111   もも 7  204   ぶどう 8  111   めろん d1に  111と入力するとe1からe5がこのように したいのです わかりにくくてすみません やはりオートフィルターでしょうか

  • 2v82
  • ベストアンサー率23% (3/13)
回答No.5

VLOOKUP関数を使用しますか? まずは、A列を基準に並べ替えを行います。 D列にA列の検索した番号とありますが、この関数ではそのままA列を使用して検索できますので、次のような式になります。(いちおう、E列とF列に結果を表示するということで・・・) E列:VLOOKUP(A1,A$1:C$5,2,FALSE)  :="りんご" F列:VLOOKUP(A1,A$1:C$5,2,FALSE)  :="東京" これらを下にコピーすればOKです。 ただ、このように抽出するなら並べ替えを行った後にオートフィルターをかけたほうが早いような気がしますが・・・

hajihaji
質問者

お礼

夜分遅くありがとうございます >:="りんご"の部分がデーターが多すぎて 設定が困難なんです

  • saru5
  • ベストアンサー率34% (41/118)
回答No.4

#1&3です。 指定した表の一列目がA列ですよね。 E列には、表の「2」列目が出るような式を、F列には表の「3」列目が出るような式を入れればOKです。 がんばってください。

hajihaji
質問者

お礼

ありがとうございます 横にE列 F列に値を出す事は出来るのですが d1に番号を入れた場合3個あれば3行 10個あれば10行ができず悩んでます

  • saru5
  • ベストアンサー率34% (41/118)
回答No.3

#1です。補足ありがとうございます。 それならvlookup関数の代表的な使い方です。 うまくいかなかったとのことですが、参考書などをもう一度見返してください。簡単にできる内容です。

hajihaji
質問者

お礼

何度もありがとうございます 1行ごとのvlookupはよく使っているのですが それの応用ですね がんばってみます

  • bqpd
  • ベストアンサー率24% (11/45)
回答No.2

それを実現させる関数は思いつかないのですが、検索したいだけなら 列aを選択 ↓ フィルタ(オートフィルタ) ↓ 列aあたりに出てる"▽"を押して 123-3322を選ぶ で、その結果と近い形になりますが・・・・ 関数・・・ですよね、すみません。 ちなみにオートフィルタでよければ画面上部のメニューを探してください (割と右側のメニューだったかと。)

hajihaji
質問者

お礼

ありがとうございます 早速試させていただきます

  • saru5
  • ベストアンサー率34% (41/118)
回答No.1

vlookup関数?いやhlookupでしょうか? ちょっと、ご質問の内容が理解できないのですが・・・

hajihaji
質問者

お礼

早速ありがとうございます vlookupでは試してみたのですがうまくいきません 仮にd1に摘出したいa列の番号を入力して その番号があればe1にb1の値 f1にc1の値というように したいのです 説明不足ですみません