- ベストアンサー
指定条件に合うデータを関数で抽出したい
Excelの表のデータで指定の条件に合ったデータだけを、関数を使って抽出したいです。 条件:C列="〇" A列 B列 C列 (抽出結果) 東京 10 〇 東京 10 〇 大阪 20 〇 大阪 20 〇 大阪 25 × 関数としては、ROW、ROWS、COLUMNS関数は理由があって使えません。ROWなどで設定する値は手打ちでも構いませんので、教えていただけると助かります。 どうぞよろしくお願いいたします。
- みんなの回答 (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分を上記式に被せればよい。核心がぼやけるので、このたびは略。
お礼
ありがとうございます。 ちゃんと抽出することが出来ました。 Excelの機能を利用したシステムで使用するのですが、ROWなどの関数は対応していないため利用できないのです。VBAも使えません。 でも勉強になったので良かったです。