今日は、関数の組み合わせによって文章の中にある数字を抜き出し、数値として計算出来るようにする方法を紹介しますね・・・
- セルA1に・・・本日の入金は、不足金△\3000
- セルB5にその金額を抜き出しています・・・3000

- セルB5に金額だけ取りでしてますが其の数式は・・・
=VALUE(MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")),LEN(A1)))
かなり複雑ですが、説明してみますね・・・
- 先ず、セルA1の文章の中から数字を見つけ出すのにFIND関数を使ってます・・・
=FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")
- 文章の中から数字を検索したいので検索文字列は・・・{0,1,2,3,4,5,6,7,8,9}
- 調べる対象はセルA1ですが・・・
- 半角英数に変換して・・・=ASC(A1)

- 検索文字列を含む文字列なので0123456789を演算子&でセルA1に繋いでおきます・・・
=ASC(A1)&"0123456789"
- 半角英数に変換して・・・=ASC(A1)
- 開始位置は省略しました
- 結果、 0 から検索してますので検索結果は文章の初めから14番目が最初という14が表示されてます。

- 次に、先程のFIND関数で数値の位置 0 から順番に 9 迄検索した位置で
最小すなわち一番最初に数値が出てきた位置を調べたいのでMIN関数を使ってます・・・
=MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789"))
- セルA1の文章の最初から13番目の位置に 3 が存在してますので結果 13 と表示しました
- この13番目が抜き出したい数字の最初に成る訳です

- いよいよ数字を抜き出して表示させる訳ですが、MID関数を使用してます・・・
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")),LEN(A1))
- 先ず、検索する文字列はセルA1ですので・・・=MID(A1,開始位置,文字数)
- 数字の開始位置は(2)で作った式が開始位置に成りますね・・・
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")),文字数) - 文字数なのですが、半角と全角が混在していますが関係無く数えてくれるLEN関数を使用しました・・・

- これを使用する事によって、万が一文章全てが数字であっても対応できる訳です
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")),LEN(A1))
- これで文章の最初から13番目以降の数字 3000 が取り出せました
- 但し、この数字は文字列として取り出されてますので計算式には使用できません
- いよいよ最後ですが、取り出した数字を数値に変換します・・・
=VALUE(MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&"0123456789")),LEN(A1)))
今日はかなり複雑に成ってしまいましたが、実務として使う事は必ずあると思いますので、
意味を理解するのが難しくても数式をそのまま使用しても利用出来ると思いますよ・・・
今日の小技は如何でしたか?
