こんにちは、おかちゃんせんせいです!
今書いている記事で一番読んでいただいている記事が、Excel関連の記事になります。
本心としては他のメインテーマに関する記事を読んでいただきたいところですが、記事の内容が誰かの役に立っていると思うと嬉しくもあります。
今回もExcel VBAの実装をしていて、解決策がなかなかネット検索で見つからなかった内容について共有いたします。
目次
見た目が一緒なのに違うものと認識されてしまう
マクロを使わなくても、Excelで作業していて時々遭遇するのが、パッと見た目は同じ数値なのに違うものと認識されてしまうことです。
そういったケースの定番は、書式設定の相違によるものです。
例えば、A列とB列のデータは一見すると同じ数値に見えますが、C列にてIF文で確認してみると不一致という結果になります。
理由は簡単で、A列とB列で書式設定が異なるから。
A列は「標準」で、セルに数値が入力されれば通常数値として認識されます。
しかし、B列は「文字列」で、B列の数字は数値ではないため集計することができません。
数値が文字列として認識されている場合には、セルの左上角が緑色三角になります。
このセルについて確認すると、数値が文字列として認識されていることと、数値に変換するかどうか確認するダイアログが表示されます。
照合・突合するときには必ず書式を統一する
だからこそ、集計表を作るときの鉄則ですが、同じ属性のものは必ず同じ書式にします。
けれど、自分が作成したデータではないものと比較・照合・突合する際には、書式が相違していることがあるので要注意です。
比較する列の書式を同じにするとき、『数値→文字列』で統一するのか、『文字列→数値』と変換して統一するかでアプローチが異なります。
なぜなら、例えば『文字列』で統一しようとします。
そこで、A列全体の書式設定を『文字列』に変換したとしても、なぜか文字列として認識されてしまうからです。
これはどうやらExcelの仕様のようで、セルをダブルクリックして強制的に文字列として認識させないといけないようなのです。。。
ダブルクリックして、カーソルを別のセルに移動させると、B列と同じようにセルの左上角が緑色になり、ようやく数値が文字列として認識されるのです。
文字列を数値に一括変換するのは簡単だが・・・
なので、数値を文字列として改めて認識し直そうとすると、セル一つずつダブルクリックして、文字列として認識させなければなりません。
例題くらいのセル数であれば容易ですが、セルの数が多いととても単純な作業をひたすらやりまくらなければなります。
自分のデータでしたら改めて表を作り直すところですが、自分が編集できないデータとなるとひたすらダブルクリック作業をやらざるを得なくなります。
対して、文字列を数値に一括変換するのは簡単で、数値に変換したい該当列を選択して、[データ] – [区切り位置]をクリックし、そのまま『完了』ボタンをクリックするだけ。
それだけで、文字列として認識されていたB列のデータをすべて数値として認識させることができるのです。
VBAで区切り位置機能を実行する方法については、下記リンク先を参考にしてくださいね。
では、最後に次のページで、数値→文字列に変換する方法について、Excel VBAを用いた方法をお伝えいたします。