• ベストアンサー

指定条件に合うデータを関数で抽出したい

Excelの表のデータで指定の条件に合ったデータだけを、関数を使って抽出したいです。            条件:C列="〇" A列 B列 C列   (抽出結果) 東京 10  〇    東京 10 〇 大阪 20  〇    大阪 20 〇 大阪 25  × 関数としては、ROW、ROWS、COLUMNS関数は理由があって使えません。ROWなどで設定する値は手打ちでも構いませんので、教えていただけると助かります。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

以前から感じているが、関数で、条件に合致するデータ行を抜き出すのは難しい。このコーナーでも説いている。少し質問者が、勉強すればわかる。 式をコピペすればよしという質問者が多いようだが。普通に独自で考えたら 1か月考えても、思いつかない式が回答されることが多い。 >関数としては、ROW、ROWS、COLUMNS関数は理由があって使えません。 の理由ぐらい説明したら。回答者を小間使いみたいに、難しい条件を付けて使うことになるのだから、一言説明したらどうか。 VBAででも処理すれば、操作でフィルターを使えば簡単なのに、実際に使うひとがエクセルを知らない層だ、とかいう理由を挙げるのが多いが。 == 次善の策として、作業列を使ってやってみる。自称imogasi方式。 例データ A-C列 D列が作業列。 A列 B列 C列 作業列 東京 10 〇 1 大阪 20 〇 2 大阪 25 × 大阪 12 京都 40 〇 3 D2の式 =IF(C2="〇",MAX($D$1:D1)+1,"") 下方向に式を複写する。結果上記例の通り。 ーー G2セルに =INDEX($A$2:$C$10,MATCH(ROW(D2)-1,$D$2:$D$10,0),COLUMN(G2)-6) 上記式では、10行までにしているが、実際のデータ行数に従って広げること。 結果を出すセル範囲を、G-I列として、G2セルに =INDEX($A$2:$C$10,MATCH(ROW(D2)-1,$D$2:$D$10,0),COLUMN(G2)-6) 下方向及び右方向3列に、式を複写する。 結果 G2:I6 東京 10 〇 大阪 20 〇 京都 40 〇 #N/A #N/A #N/A #N/A #N/A #N/A #N/Aを空白化するには、G列(H,I列)のセルの行が、D列の最大数(上記例では3=条件を満たす行数)を越えたら、空白を返すIF分を上記式に被せればよい。核心がぼやけるので、このたびは略。

tatsuponics
質問者

お礼

ありがとうございます。 ちゃんと抽出することが出来ました。 Excelの機能を利用したシステムで使用するのですが、ROWなどの関数は対応していないため利用できないのです。VBAも使えません。 でも勉強になったので良かったです。

その他の回答 (2)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.2

範囲 A:C を選択 ⇒ Alt+AQ ⇒ “指定した範囲”に目玉入れ ⇒ [検索条件範囲]ボックス内にマウスカーソルを放り込んで、範囲 H1:H2 を撫で撫で ⇒ [抽出範囲]ボックス内にマウスカーソルを放り込んで、範囲 E1:G1 を撫で撫で ⇒ [OK]をパシーッ

tatsuponics
質問者

お礼

便利な機能ですね。ありがとうございます。 今回知りたいのは、関数での対応ですが、とても参考になりました。

  • yumi0215
  • ベストアンサー率30% (1335/4411)
回答No.1

これはいかがでしょう =SUMIFS($B$1:$B$3,$A$1:$A$3,E1,$C$1:$C$3,"〇") 抽出結果がE1に東京とある場合、F1に10と表示される形で作りました。

tatsuponics
質問者

お礼

ありがとうございます。 条件の合計を求める関数ですね。今回知りたいのは、条件を満たしているデータの値をそのまま抽出する関数なので、ちょっと違うかなと思います。 でも、とても参考になりました。

関連するQ&A