- ベストアンサー
エクセル2000です。ある文字を含んでいた場合別シートに抽出したい。
シート1の A列に名前 B列に地名 C列に詳細 D列に備考欄 E列に電話番号 F列に携帯番号 ------------------------- B列の地名の中で、(たとえば)「東京都」があれば、 「東京都」のある行すべてを、シート2にコピーしたものを抜き出したいのですが、 お知恵を拝借したいです。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
幸いにして「別シート」に抽出したいとあるので (以下少し例を簡単にします) (1)サンプルデータ Sheet3のA1:A4に 東京都青梅市 山田 大阪市中央区 太田 東京都千代田区 小島 京都市左京区 上田 東京都あきる野市難波 (2)sheet4のA1に =IF(ISERR(FIND("東京都",Sheet3!A2)=0),"",Sheet3!A2)と入れA4まで複写する。 sheet4のB1に =IF(A1="","",Sheet3!B1) といれB4まで複写する。 (3)結果 東京都青梅市 山田 東京都千代田区 上田 東京都あきる野市難波 となります。 (4)そこでsheet4のA1:B4をA列で、且つ降順でソートします。 東京都千代田区 上田 東京都青梅市 山田 東京都あきる野市難波 と纏まります。
その他の回答 (5)
- happypoint
- ベストアンサー率36% (521/1422)
数式を使う方法はうまくいかなかったですか? 非常に「データベース的」なことをやろうとしているので、 Excelではどうしても限界があります。 このままがまんして数式やフィルタを使って処理するか、 Accessにデータを移して処理した方がいいと思います。 どうしてもと言うことならVBA(マクロ)を組むことになると思います。 ExcelVBAで・・・というタイトルで質問をたてると、 得意な方がいらっしゃいますので。
お礼
たびたびどうもです。 Accessは、ないので、エクセルで、なんとかと・・ 数式は、 「数値」が結果として表示されるとこまでは、うまくいくようなのですが、 そのあとの =IF(ISNUMBERをつかうと、ファイルがみつからないというファイルを選択するダイアログBOXがでて、 うまくいかないのです。 どこか、まちがっているのかもしれませんが、 再度じっくりやってみます。 VBA・・・再度お願いするかもしれません。
フィルタオプションを使ったらできると思います 結果を出したいシート(シート2)に、例 A1のセルに地名(シート1の取り出したい表の取り出したい列のフィールド名)を入力、その下のセルA2のセルに東京都と入力しておく そして、A4のセルにセルポインタを置いて、 1.[データ]→[フィルタ]→[フィルタオプションの設定] 2.抽出先を「指定した範囲」に リスト範囲をそのデータの入っている表を範囲指定 検索条件範囲で、条件を入れたA1~A2を範囲指定 抽出範囲を表示したいセルに(A4)を指定 これで地名が東京都のデータを取り出せます。 ただし、そのデータの入っている表は1列目には必ず、見出しが必要です。 そして、別のシートにある条件を入力した部分(A1)も同じ見出しを入力してなければいけません。
お礼
どうも、ありがとうございます。 試してみたのですが、どうもうまくいかなくて。 再度ためしてみます。
- happypoint
- ベストアンサー率36% (521/1422)
数式でやらない方法もありますよ。 ただし、1行目は見出しの行であるとします。 1.データ-フィルタ-オートフィルタ 2.見出しのセルに▼マークがつきます。 B列の「地名」の見出しの▼をクリック 3.ドロップダウンリストの中から「オプション」を選択 4.抽出条件 「地名」ボックスに「東京都」を入力し、 条件のドロップダウンリストは「を含む」を選択。 5.東京都を含むデータだけが抽出される。 6.行選択ですべての行をコピー 7.貼り付けたいシートに切り替えて貼り付け
お礼
どうも、ありがとうございます。 この方法は、最初に考えたのですが、 別シートに、自動的にコピーさせたいんです。 順次、追加したデータの中に、東京都があると、その都度 コピーするようなので・・・ データを入力した時点で、別シートにも表示させたいんです。
- happypoint
- ベストアンサー率36% (521/1422)
>その行すべてが、そのままシート2にコピーできればよいのですが ですから、 =IF(ISNUMBER(Sheet1!G1),Sheet1!A1,"") =IF(ISNUMBER(Sheet1!G1),Sheet1!B1,"") =IF(ISNUMBER(Sheet1!G1),Sheet1!C1,"") =IF(ISNUMBER(Sheet1!G1),Sheet1!D1,"") =IF(ISNUMBER(Sheet1!G1),Sheet1!E1,"") =IF(ISNUMBER(Sheet1!G1),Sheet1!F1,"") ですよ。
- happypoint
- ベストアンサー率36% (521/1422)
たとえばB列(B1)の地名を検索して、 東京都という文字が含まれていたかをG列(G1)に表示するには =SEARCH("東京都",B1,1) という式を入れます。 「東京都」という文字列が含まれていた場合、 「東京都」が何文字目にあったかという「数値」が結果として表示されます。 もし見つからなかった場合は、「#VALUE」というエラーを返します。 したがって、G列に数値が表示されているデータが、 「東京都」という文字を含んだデータですので、 これを別のシートに抽出すればいいです。 Sheet1のG1セルが数値の時だけ、Sheet1の氏名を、 Sheet2に表示する数式 =IF(ISNUMBER(Sheet1!G1),Sheet1!A1,"")
補足
回答ありがとうございます。 どうもうまくいかないのですが、(もういちどトライしてみますが) シート1に「東京都」と入力された場合に、その行すべてが、そのままシート2にコピーできればよいのですが、 無理でしょうか?
お礼
試してみました。 確かに思うようになるのですが、 sheet4の式だけが入っているデータも、ソートされて最上部に空白セルがくるのが・・・ どうも、ありがとうございました。
補足
失礼しました。 降順でならびかえでしたね。 これでうまくいきました。 しかし、並び替えするのが・・ どうも、ありがとうございました。