- ベストアンサー
エクセルの関数で
お世話になります 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行と 全て摘出したいのです よろしくお願いいたします
- みんなの回答 (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件というのを想定してます。超えるようでしたら変更してください
その他の回答 (8)
- saru5
- ベストアンサー率34% (41/118)
オートフィルタか並べ替えですね。 キーになるA列の数値が複数のBC列の結果を求めるので、関数では無理です。
- 2v82
- ベストアンサー率23% (3/13)
#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) そのほかにも同様に使用するデータベース関数がありますので、ヘルプを参照して見て下さい。
お礼
たびたびありがとうございます 私にはちょっと時間がかかりそうなので まずはお礼まで
- saru5
- ベストアンサー率34% (41/118)
最初のご質問で、その部分が意味がわからなかったのです。 つまり、A列が同じでもBC列の内容は違う行が存在しているわけですよね? それはデータベースとしては不完全ですので、A列をキーにしての拾い出しはできません。 #2さんの書かれている通り、フィルタを使うのが妥当です。 ACCESSならできますが、EXCELの関数では私の知る限りは無理だと思います。
補足
ありがとうございます 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)
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です。 ただ、このように抽出するなら並べ替えを行った後にオートフィルターをかけたほうが早いような気がしますが・・・
お礼
夜分遅くありがとうございます >:="りんご"の部分がデーターが多すぎて 設定が困難なんです
- saru5
- ベストアンサー率34% (41/118)
#1&3です。 指定した表の一列目がA列ですよね。 E列には、表の「2」列目が出るような式を、F列には表の「3」列目が出るような式を入れればOKです。 がんばってください。
お礼
ありがとうございます 横にE列 F列に値を出す事は出来るのですが d1に番号を入れた場合3個あれば3行 10個あれば10行ができず悩んでます
- saru5
- ベストアンサー率34% (41/118)
#1です。補足ありがとうございます。 それならvlookup関数の代表的な使い方です。 うまくいかなかったとのことですが、参考書などをもう一度見返してください。簡単にできる内容です。
お礼
何度もありがとうございます 1行ごとのvlookupはよく使っているのですが それの応用ですね がんばってみます
- bqpd
- ベストアンサー率24% (11/45)
それを実現させる関数は思いつかないのですが、検索したいだけなら 列aを選択 ↓ フィルタ(オートフィルタ) ↓ 列aあたりに出てる"▽"を押して 123-3322を選ぶ で、その結果と近い形になりますが・・・・ 関数・・・ですよね、すみません。 ちなみにオートフィルタでよければ画面上部のメニューを探してください (割と右側のメニューだったかと。)
お礼
ありがとうございます 早速試させていただきます
- saru5
- ベストアンサー率34% (41/118)
vlookup関数?いやhlookupでしょうか? ちょっと、ご質問の内容が理解できないのですが・・・
お礼
早速ありがとうございます vlookupでは試してみたのですがうまくいきません 仮にd1に摘出したいa列の番号を入力して その番号があればe1にb1の値 f1にc1の値というように したいのです 説明不足ですみません
お礼
お礼が遅くなりました 思うような事ができました ありがとうございました