アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで文字列から数字を書式を使って抽出したいと考えています。

元となる文字列は 2パターンです。
パターンA 16 results ➔16
パターンB 1-24 of 17,565 results ➔ 17565

パターンA
・数字 +半角スペース + 「results」
・数字部分は1桁〜最大5桁


パターンB
・「1-24 of」+半角スペース + 数字(抽出したい部分)+半角スペース+「results」
・1桁〜最大5桁

なるべく、シンプルで短い書式にしたいのですが、よい方法はないでしょうか。

「エクセルで文字列から数字を抽出する書式」の質問画像

質問者からの補足コメント

  • どう思う?

    以下は自力で、組んだ書式です。
    もっとシンプルにスマートにできる方法はないか、案があれば教えてください。

    =IF(COUNTIF(A1,"*of*")>0,
    MID(LEFT(A1,FIND("r",A1)-1),FIND("f",A1)+1,LEN(A1)),
    LEFT(A1, FIND(" ", A1)-1))

      補足日時:2017/06/07 23:46

A 回答 (5件)

形式が決まってるなら、置換だけでもいいかぁ


=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," results",""),"1-24 of ",""),",","")
    • good
    • 0

=-LOOKUP(,-LEFT(RIGHT(A1,8+{1;2;3;4;5;6}),{1;2;3;4;5;6}))



とか。 Excelのバージョンは書いて欲しいものです。
    • good
    • 0

パターンが決まっているのなら、抽出しない文字数は一定ですよね。


それを前提にするなら、以下のものでも可能だと思う。
 =IF(ISBLANK(A1),"",VALUE(MID(A1,IF(LEFT(A1,2)="1-",8,1),FIND("results",A1)-IF(LEFT(A1,2)="1-",8,1))))

大雑把な式なので、もっと簡略できると思います。
    • good
    • 1

提示例だとB1に以下の数式を入力し、フィルハンドルで下に引っ張っていくと、抽出できます



=IF(ISNUMBER(FIND("results",A1)),SUBSTITUTE(IF(ISNUMBER(FIND("of",A1)),MID(A1,LEN("1-24 of ")+1,FIND(" ",A1,LEN("1-24 of ")+1)-LEN("1-24 of ")),MID(A1,1,FIND(" ",A1)-1)),",",""),"該当なし")


パターンA、パターンB一括判定なので、かなり複雑です

簡単に説明しておくと、
1)対象セルに result という文字列が含まれているか判定→ある場合は2)へ進み、ない場合は”該当なし"を返す
2)次に対象セルに of という文字列が含まれているかを判定→ある場合は3)へ、ない場合は4)へ進む、また3)、4)で返される結果のカンマ記号をカンマなしに置換
3)of以降の2つの半角スペースの位置を調べ、その間の文字列を取り出す
4)先頭から、最初の半角スペースまでの文字列を取り出す
    • good
    • 0

パターンA


FIND関数で半角スペースの位置を得て、LEFT関数で、一つ前まで取り出せばよいです。

パターンB
同様に、「f」と「r」の位置を得て、MID関数で取り出せばよいです。
なお、このままではカンマを含んだ文字列なので、VALUE関数で数値変換が必要です。

ご参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!