• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで文書を検索、抽出したいのですが・・・。)

エクセルで文書を検索、抽出したいのですが・・・。

このQ&Aのポイント
  • エクセルでSheet1に以下を貼り付け、Sheet2に抽出して加工されたデータを表示させたいと思います。
  • 条件1 ・上の"商品説明"から"スペック"の前までで、 ・"商品説明"を除いた文書 条件2 ・上の"スペック"から"在庫状況"の前までで、 ・"スペック"を除いた文書 を表示させたいと思います。 INDEXやMATCHでできそうとは思うのですが・・・。 例) 商品説明:●クオリティ自慢のボッテガがこのお値段! ●ママさん愛用♪ ↓ ●クオリティ自慢のボッテガがこのお値段! ●ママさん愛用♪ と抽出し表示させたいのですが・・・。 ということは、可能でしょうか?
  • 以上、よろしくお願いします。

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

Sheet1のA列にデータがあるとして Sheet2のセルA1に "商品説明"と入力 Sheet2のセルA2に下記の数式を入力 =RIGHT(OFFSET(Sheet1!$A$1,MATCH(Sheet2!A1&"*",Sheet1!$A:$A,0)-1,0),LEN(OFFSET(Sheet1!$A$1,MATCH(Sheet2!A1&"*",Sheet1!$A:$A,0)-1,0))-FIND("●",OFFSET(Sheet1!$A$1,MATCH(Sheet2!A1&"*",Sheet1!$A:$A,0)-1,0))+1) Sheet2のセルA3に下記の数式を入力 =IF(OR(NOT(ISERR(FIND("スペック",OFFSET(Sheet1!$A$1,MATCH("*"&Sheet2!A2,Sheet1!$A:$A,0),0)))),A2=""),"",OFFSET(Sheet1!$A$1,MATCH("*"&Sheet2!A2,Sheet1!$A:$A,0),0)) Sheet2のセルA4以降は必要なだけコピー Sheet2のセルB1に "スペック"と入力 Sheet2のセルB2に下記の数式を入力 =RIGHT(OFFSET(Sheet1!$A$1,MATCH(Sheet2!B1&"*",Sheet1!$A:$A,0)-1,0),LEN(OFFSET(Sheet1!$A$1,MATCH(Sheet2!B1&"*",Sheet1!$A:$A,0)-1,0))-FIND("○",OFFSET(Sheet1!$A$1,MATCH(Sheet2!B1&"*",Sheet1!$A:$A,0)-1,0))+1) Sheet2のセルB3に下記の数式を入力 =IF(OR(NOT(ISERR(FIND("在庫状況",OFFSET(Sheet1!$A$1,MATCH("*"&Sheet2!B2,Sheet1!$A:$A,0),0)))),B2=""),"",OFFSET(Sheet1!$A$1,MATCH("*"&Sheet2!B2,Sheet1!$A:$A,0),0)) Sheet2のセルB4以降は必要なだけコピー 関数の詳しい説明はヘルプを参照してください。

furutusara
質問者

お礼

ありがとうございました。

furutusara
質問者

補足

ありがとうございます。 あと、Sheet1からSheet2に タイトル:新しいお財布を! ←●や○ではなく: 商品説明: ●クオリティ自慢のボッテガがこのお値段! ●ママさん愛用♪  ←空白  ←空白 この商品は小銭もいっぱいはいります。  ←空白 歴史を感じさせる質感  ←空白 スペック: ○ブランド:BOTTEGA VENETA(ボッテガべネタ) ○生産地:イタリア ○商品名:BOTTEGA VENETA ラウンドファスナー財布 在庫状況: 在庫わずか ↓ 新しいお財布を!  ●クオリティ自慢のボッテガがこのお値段! ●ママさん愛用♪  ←空白  ←空白 この商品は小銭もいっぱいはいります。  ←空白 歴史を感じさせる質感  ←空白 ○ブランド:BOTTEGA VENETA(ボッテガべネタ) ○生産地:イタリア ○商品名:BOTTEGA VENETA ラウンドファスナー財布 と抽出することは可能でしょうか? 空白はスペースではなく、何もない改行の状態です。 以上、よろしくお願いします。

その他の回答 (3)

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.4

まだありましたか(汗) >あと、12,000円の円を消して表示させることは可能でしょうか? 以下の数式で出来ます。 =LEFT(A1,LEN(A1)-1) 先の数式に組み込んでと言いたいところですが 数式が判りづらいので、修正しました。 =IF(Sheet1!A1="","",IF(ISERR(FIND(":",Sheet1!A1)),LEFT(Sheet1!A1,LEN(Sheet1!A1)-1),IF(LEFT(Sheet1!A1,1)="○",LEFT(Sheet1!A1,LEN(Sheet1!A1)-1),LEFT(TRIM(RIGHT(Sheet1!A1,LEN(Sheet1!A1)-FIND(":",Sheet1!A1))),LEN(TRIM(RIGHT(Sheet1!A1,LEN(Sheet1!A1)-FIND(":",Sheet1!A1))))-1)))) 注意! 関数のネスト(入れ子)が6個になっていました。 ネストは、7個までしか出来ませんので (バージョン2003以前の場合、2007では64個まで) これ以上は、1つの数式では処理出来なくなりそうです。 条件や処理が増える場合、数式が2つになります。 ご自分で数式を改良される時は、気をつけて!!!

furutusara
質問者

お礼

ありがとうございました。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.3

ANo.2の数式に誤りがありました。 別シートに表示ですので、 下記数式になります。 =IF(Sheet1!A1="","",IF(ISERR(FIND(":",Sheet1!A1)),Sheet1!A1,IF(LEFT(Sheet1!A1,1)="○",Sheet1!A1,TRIM(RIGHT(Sheet1!A1,LEN(Sheet1!A1)-FIND(":",Sheet1!A1))))))

furutusara
質問者

お礼

ありがとうございました。

furutusara
質問者

補足

ありがとうございます。 あと、12,000円の円を消して表示させることは可能でしょうか? rightでできそうなのですが・・・。 以上、よろしくお願いします。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

補足に対して 以下の数式で如何でしょうか。 =IF(A1="","",IF(ISERR(FIND(":",A1)),A1,IF(LEFT(A1,1)="○",A1,TRIM(RIGHT(A1,LEN(A1)-FIND(":",A1)))))) 注意 サンプルの場合では、上記数式で良いのですが 実際、実用に耐えられるか疑問です。 理由 一部を抽出する条件で ":"(全角コロン)から後の文字列 ですが、 ":"を含む文字列の種類が複数あります。 実際は、"「項目」"+":"+" "(スペース)を 削除したいわけですから >タイトル:新しいお財布を! は、良いのですが >○生産地:イタリア は、ダメになります。 そのため、条件に最初に"○"が来る文字列は そのままで表示としました。 しかし、最初に"○"が来る文字列に":"が含まれる場合、 お望みの結果が得られないことがあります。 さらに、条件が増えた場合、 IF関数では、ネストが7つまでですので、 条件の数に上限があります。 以上を考慮した上で、数式をご使用ください。 「おまけ」 数式を簡単に説明すると IF(A1="","",次)で セルA1が空白なら""、そうでないなら次へ IF(ISERR(FIND(":",A1)),A1,次)で セルA1が":"を含まないならそのまま表示、そうでないなら次へ IF(LEFT(A1,1)="○",A1,次)で セルA1の最初の文字が"○"ならそのまま表示、 そうでないなら次へ TRIM(RIGHT(A1,LEN(A1)-FIND(":",A1))) セルA1の最初の":"の後の文字列を表示する

furutusara
質問者

お礼

ありがとうございました。

関連するQ&A