文字列中の数字を取り出す技 2 - Vol.35 -

5月 12, 2018


スゴ技会計士からの挑戦状 VOL.35

文字列中の数字を取り出す技-2

前回の問題から「1から始まる」をなくすと急に難しくなります。
だからといって難しい関数が必要になるわけではありません。
同じ関数を使って解答にたどり着くことができるでしょうか。




【問題】難易度★★★★★
文字列の中に8桁の数字があります。
数字を取り出してください。



【ヒント】
「開始位置」がわかればできるのは前回と同じです。
前回は「1」だけ探せばよかったのですが今回はそうはいきません。
諦めますか?
でも数字は0~9の10個しかありません。
10個しかないのであれば全部数えてしまいましょう。
そう思い付けば解決の糸口がみつかります。


【解答例】

1行目に0~9の数字を用意します。
FIND関数でひとつずつ数字を探します。
IFERROR関数を使ってエラーの時は空白にします。

=IFERROR(FIND(E$1,$A2),"")



できた数字の中で一番小さい数が最初の数字の位置です。
範囲内の一番小さい数を教えてくれるのはMIN関数です。

=MIN(E2:N2)


一見難しそうな問題も基本関数だけで解決することができます。


【エラーを出さないアイデア】

参考までにFIND関数でエラーが出ないようにするためにこんな方法もあります。
数字が見つからないとエラーになるので、必ず数字が見つかるように0~9のすべての数字を結合して文字列を作っています。

一長一短ありますが、おもしろいアイデアです。

=FIND(E$1,$A2&1234567890)



【配列定数を使った解答】

このアイデアと配列定数を使うと、以下のように作業領域を使わずに開始位置を求めることもできます。
ただし難易度が高いので、実務で利用するときは十分に気を付けてください。

=MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&1234567890))

無料メルマガ「スゴ技会計士の挑戦状」登録はこちらから!

無料メルマガ登録

株式会社シンプルソリューションズ

〒102-0074
東京都千代田区九段南1-5-6
りそな九段ビル5F KSフロア
Powered by Blogger.