つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

Excelデータ先頭のアポストロフィーのために計算できない~マクロで対処

 私が会社で扱っている業務系システムは、本社のサーバーとつながったデータベースシステムです。サーバー内に格納されたデータを、その都度引っぱり出してきては、日々の業務を処理しています。

 その業務系システムには、エクスポート機能が用意されています。その機能を使うと、条件に従って抽出したデータを、利用者端末(各社員のパソコン)に、ファイルとして保存することができます。
 端末にエクスポートしたファイルを開くと、データを表計算ソフトExcelで扱うことができます。抽出したデータを、表計算で自由に編集できるので、便利な機能です。

 ただし、ここで一つ問題があります。
 セル内の数字の先頭に、アポストロフィ(シングルクォーテーション)がくっ付いているのです。
 このアポストロフィーは、数字を文字列として表示する働きがあります。数字を、「数値」としてではなく、「文字列」として扱うようにする特殊な働き、機能です。
 文字列ですから、見た目は数字であっても、合計などの計算ができません。
 データベースシステムからExcelファイルとしてエクスポートするときに、よく遭遇する問題です。





 計算可能なデータにするには、、数値に変換する必要があります。データ先頭のアポストロフィーを取り除く、などです。
 このアポストロフィーは、通常の文字ではありません。書式設定のための制御文字です。
 ですから、置換機能を使っての削除はできません。セル範囲内の大量のデータの、先頭アポストロフィーを一気に削除しようと、多くの方が置換機能でやろうします。ですが、失敗します。これでは無理です。

 では、どうするか。
 他の方法で、データ先頭のアポストロフィーを削除することになりますが、そのためには、いくつかの方法があります。
 その方法の一つが、
  「形式を選択して貼り付け」の機能
を使う、というものです。

 「形式を選択して貼り付け」の機能を使うと、大量のデータのアポストロフィーを、一気に取り除くことができます。やり方は、それほどむつかしいものでありません。いったん覚えてしまえば、簡単にやれます。

 その具体的手順は、
  こちらの記事をご覧ください。


 私も、これまで、「形式を選択して貼り付け」機能を使って、文字列から数値データに変換させて、処理を行ってきました。
 「形式を選択して貼り付け」機能での文字列から数値への変換は、割と簡単な作業です。
 確かに単純な手作業です。
 ですが・・・・、
 そうは言っても・・・・、
これが毎回となると、ちょっと煩わしく感じます。

 そうなると、
  「この作業、マクロ化できるんじゃね?」
  「ボタンのクリック一つで、自動実行できるんじゃね?」
って、考えるようになります。

 人間、ある問題をずっと考えていたら、あるとき、ふっとひらめくもんです。
 私もひらめきました。
 「そうだ、データ型変換関数だ!」と。

 で、やってみました。
 そうしたら、大成功。想定のとおり、うまくいきました。

 データ型変換関数は、セルに格納されているデータのデータ型を、他の型に変換する関数です。
 例えば、
 「CInt」関数は、データ型を整数型(Integer)に変換してくれます。関数の戻り値が、整数という数値となる関数です。
 同じく、「CLng」関数は、データ型を長整数型(Long)に変換してくれます。
 つまり、「CInt」関数や「CLng」関数は、セル内のデータを数値に変換してくれます。これによって、元々のデータの先頭にアポストロフィーがくっ付いていても大丈夫です。これら「CInt」「CLng」の関数使用の結果、数値に変換されます。そうすると、足し算、引き算、合計などの計算ができるようになります。
 
 具体的に、どのようなマクロコードなのか、それについては、また別の記事にまとめることにします。





 それでは、また次の記事で
goosyun


《2023年8月11日追記》
 マクロで自動実行するために、VBAコードはどう書くのか、記事にまとめました。
  こちらの記事をご覧ください。