- ベストアンサー
エクセルで2列に入力された同一データを全て抽出したい
下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。 A B 1 バナナ みかん 2 りんご バナナ 3 バナナ バナナ 4 いちご みかん 5 バナナ いちご
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2さんとは基本回答は同じですが。 一番上にタイトル行を一列挿入する→C2に =IF(OR(B2="バナナ",C2="バナナ"),1,0) を入力して、C3~C6にコピーする。 「データ」-「フィルタ」-「オートフィルタ」 として、「1」を選択。 オプションを選択しないだけ、微妙に作業が早い気がしますけど、いかがでしょうか。 どの程度のデータなのかはわかりませんがDB化するのであれば、「バナナ」には入力ミスを無くすために「ID」つけたほうがよいと思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
これも関数式だけでやるのは、ちと難しい。本日似た質問があったので改良で出来ましたが。 (例データ)A2:B10に(A1:B2は意味があってデータを入れないこと)C1は0をいれておくこと。A1:C10は下記。但し C2:C10は後述の関数式1の結果を先に掲出。 C列は作業列で、使わざるを得ないと思います。 A列 B列 C列 0 バナナ みかん 5 りんご バナナ 5 バナナ バナナ 5 いちご みかん 7 バナナ いちご 7 くり かき 10 みかん くり 13 メロン くり 13 キウィ 13 (関数式1)C2に =IF(COUNTIF($A$2:A2,A2)=1,IF(COUNTIF($A$2:$B$10,A2)>1,MAX($C$1:C1)+COUNTIF($A$2:$B$10,A2),MAX($C$1:C1)),MAX($C$1:C1)) といれる。C2以下最終行まで複写する。 (関数式2)E1に =INDEX($A$2:$A$10,MATCH(ROW()-1,$C$1:$C$10,1)) といれて、E2以下に複写する。C列の最終行の(最大値) 第13行まで複写する。 (結果)E1:E13に バナナ バナナ バナナ バナナ バナナ いちご いちご くり くり くり みかん みかん みかん となります。 ---- こんな式は過去にやったことがないと、直ぐには思い浮かばないでしょう。 VBAでやれば素直な仕組みのプログラムを組んで出来そうですが。
お礼
すごい関数ですね。 こんな関数の達人になれたら、エクセルを使うのが楽しいでしょうね。 理解できるように勉強してみます。 ありがとうございました。
一番上にタイトル行を一列挿入する C2に =IF(A2="バナナ",1,0)+IF(B2="バナナ",1,0) を入力して、C3~C6にコピーする。 「データ」-「フィルタ」-「オートフィルタ」 として、 C1の▼マークをクリックして、「オプション」を選択。 「0」、「より大きい」を選択して、OK
お礼
IF関数を使うとは、アイデアですね。 いろいろ考えたのですが、思いつきませんでした。 ありがとうございました。
行を抽出したいんですよね? フィルタオプションでいけると思いますよ。 URLを参考にしてみてください。
お礼
速攻で回答をいただき、ありがとうございました。 参考URLを見たのですが、2列から同じデータを抽出する方法が自分の頭ではちょっと理解できませんでした^^; もう一度、勉強してみたいと思います。
お礼
ORのつく関数は初めて見ましたが、「1」を選択するだけなので、とてもお手軽ですね。 早速使ってみます。 「ID」も使ってみます。 ありがとうございました。