• ベストアンサー

エクセルの関数で抽出するには

例えば、四字熟語を200件くらい登録して、その中から条件に一致した物だけを抽出したいと思います。 漢字の「一」だけを入力したら、登録してある200件くらいの範囲から四字の中のどの位置に「一」があったとしても、すべて抽出してくれるように関数を使って作成するにはどのような関数を使用し、どのように作成すればいいのでしょうか? 迷っています・・お願いします。

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

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

作業列なし、作業列2の回答が出ました。1つ使う例を上げます (例)Sheet1で A2:B6 A列  B列(関数の結果) 一気呵成 1 一日千秋 2 大器晩成 君子豹変 一挙両得 3 B2に=IF(NOT(ISERROR(FIND("一",A2))),MAX($B$1:B1)+1,"") と入れて、B6まで式を複写する。結果上記の通り。 やったことは、一を含む行に連番を振りました。 Sheet2に B2に =INDEX(Sheet1!$A$2:$A$6,MATCH(ROW()-1,Sheet1!$B$2:$B$6,0),0) と入れてB5まで式を複写。 やったことは、Sheet1の連番とSheet2の行を関連付けて、Sheet1のデータを採ってきました。 結果 一気呵成 一日千秋 一挙両得 自称imogasi方式。他の類似質問で同様の回答を沢山しています。 式が、作業列なしの方式に比べ、デメリットはあるが、判りやすいのではと思います。

wave1993
質問者

お礼

ナイスですね!さっそくチャレンジしてみました。 感動です。

その他の回答 (6)

  • Poer
  • ベストアンサー率45% (72/157)
回答No.6

 もしかするとこれまでのご回答ですでに解決されていて、単なる余計なおせっかいかもしれませんが、私がかつて独自に考えたやり方です。作業列を2つ作らないといけないのが難点ですが...。  C列に(C2から)四字熟語のデータがあるとして、   (1)A2に =IF(ISERR(FIND($D$1,C2)),"",1)   (2)B2に =SUM(A$2:A2)   (3)D2に =IF(ISERROR(VLOOKUP(ROW(A1),B:C,2,0)),"",VLOOKUP(ROW(A1),B:C,2,0))   (4)A2、B2、D2それぞれを四字熟語の最下行と同じ行数まで下方にコピー。   (5)A列、B列の列の幅を0(ゼロ)にして列を隠す。 →D1に検索対象のデータを入力すると、D2以下に抽出されます。  以上、ご参考までにお願いします。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

#2のmshr1962です。 関数での例 A列に四字熟語、E1を検索文字としてB列に B2=NOT(ISERR(FIND($E$1,A2)))*ROW() で行数が表示されます。 E2=IF(ROW()<=COUNT($B:$B),INDEX($A:$A,SMALL($B:$B,ROW()-1),1)) としてB2とE2を下方(200行?)にコピーしてください。 E1に入力した内容でE2以降に四字熟語がセットされます。

wave1993
質問者

お礼

ありがとうございます。 思った通りのものができそうです。

noname#204879
noname#204879
回答No.4

[検索条件範囲]に式 =NOT(ISERROR(FIND("一",B4))) を入力した[フィルタオプションの設定]で、同シートまたは別シートに(隙間なく)抽出する手もあります。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No2さんのが正解だと思いますが、どうしても関数で全て検索したいなら、 仮にA列にデータが並んでるとして B列に=IF(ISERROR(FIND("一",A1,1)),"",A1)として下までコピーすれば該当のものだけB列に抽出されますが・・・・。

wave1993
質問者

お礼

この関数を応用して、いろいろチャレンジしてみます。 B列に並んだ物を、C列にまとめて、B列を非表示してしまえればいいのですが・・・

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

縦一列に入れてるなら、「データ」「フィルタ」「オートフィルタ」を設定 1行目にでてくる▼をクリックして、オプションを選択します。 「一」「を含む」でOKすればご希望の通りですが...

wave1993
質問者

お礼

ありがとうございます。 たしかにオートフィルタでは簡単なんですが、関数でなんとかしたいと思います。2重3重の手間がかかっても、最終的に抽出できるようにチャレンジします。

  • akio_myau
  • ベストアンサー率34% (515/1480)
回答No.1

抽出というのは関数では向いていません。 このような場合にはツールメニューのオートフィルタを利用して法がよいのではないでしょうか。

wave1993
質問者

お礼

早速の回答ありがとうございます。 なるべくオートフィルタは使用したくないので、関数でなんとかしてみたいのです・・・いろいろチャレンジしてみます。

関連するQ&A