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

3月 12, 2018



文字列を分解する技

今回は文字列を分解してみたいと思います。
「一木伸夫」を分解して、それぞれの漢字の文字コードを調べてみましょう。
文字列を分解するにはMID関数を使います。




=MID($A$1,ROW(),1)


開始位置にROW関数を使ってコピペする感覚に慣れてください。
文字を分解したらそれぞれ文字コードを調べて、そこから1を引いた文字コードの文字をみてみましょう。



「磯儲尻埠」って何かの暗号に使えるでしょうか?(笑)

これってなんか意味あるの?って思ったそこのあなた。
これは単なるお遊びでやっているわけではありません。
実務では文字列の中に含まれる数字の数を知りたいようなことがあります。

【問題】難易度★★★
Jt68fhg7878675egfghdssytrt87669jkjhjh8764d65
の中に数字はいくつ含まれているか数えてください。




【ヒント】
このような仕事を片付けるのに、決して目で見て数えてはいけません。
よく考えれば基本関数だけで解決できるケースが多いのです。

今回は文字列を1文字ずつ分解して、数字に変換してから範囲内の数字の数を数えます。


【解答例】
まずは文字列が何文字あるかを知りましょう。
頭の中だけで考えていても解答にはたどり着かないので、分かる情報を目で見て確認すると解決の糸口が見つかることがあります。

=LEN(A2)


セルの中に入っている数字を直接数えるのは大変なので、文字列を44個のセルに分解してみます。
1行目にCOLUMN関数を使って連番を作成しておきましょう。

=MID($A2,D$1,1)


1文字目「J」、2文字目「t」、3文字目「6」・・・
を取り出すことができました。

範囲内の数字の数を数えるのはCOUNT関数です。
=COUNT(D2:BO2)
しかしCOUNT関数で数えてもゼロという結果になってしまいます。


【文字列を数字に変換するテクニック】
実はMID関数で取り出したものはたとえ数字であっても「文字列」になっています。
文字列を数字に変換するには、文字列としての数字に1をかけるだけでできます。
よく使うテクニックなので覚えておいてください。

=1*MID($A2,D$1,1)


アルファベットなどの文字列に1をかけるとエラーになりますが、今回は全く意に介しません。
数字だけ正しく作成できれば、数字の数を数えることができます。

MID関数とCOUNT関数という基本関数だけで問題を解決することができました。


【配列数式を使った解答】
参考までに、配列数式を使うと作業領域を使うことなく数字の数を数えることができます。

{=COUNT(1*MID(A3,ROW(A:A),1)) }


考え方は同じですので、興味のある方はぜひ勉強してみてください。
ただし難易度は非常に高いので、実務で使うのはメリットデメリットをよく検討してからにしてください。


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

無料メルマガ登録

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

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