プチIT化

【Access】貼り付けた%データが”0″になるのはなぜ?!

こんばんは、わたあめです。ExcelのデータをAccessに貼り付けようとしたところ、値が0になってしまいました。状況の詳細としては、以下です。

左が貼り付けようとしている元データのExcelの表です。右が貼り付け先のAccessのテーブルです。30%,50%などの値は貼り付け後に"0"になってしまいました。70%は"1"になっています。ちなみに、Excelのセルの書式設定はどのセルも"パーセンテージ"(小数点以下の桁数:2)を設定していました。

わたあめ
わたあめ
え?!なんで?!

今回は、Accessの貼り付けが変になってしまった時にどうしたか、という記事になります。それでは、いってみましょう。

原因

原因はAccess側の書式設定ができていなかった

今回の原因は、Accessの書式設定が指定されていなかったからでした。きちんと指定ができてなかったのはAccessの以下項目です。

  • フィールドサイズ
  • 書式

小数点でのパーセント表示はフィールドサイズ:倍精度浮動小数点型、書式:パーセントという設定を行わなければなりませんでした。が、フィールドサイズ:長整数型に、書式:空欄とデフォルトのままになっていました。

話はそれますが、この2つの設定項目について、今回の事象を当てはめて考えてみましょう。

フィールドサイズとは

項目に格納するデータのサイズを指定できる設定項目です。例えば、データ型が[短いテキスト]の場合、フィールドサイズを10にすると、10文字までしかできなくなります。

データ型で指定した型によってフィールドサイズの指定方法は異なります。

先ほども述べたように、データ型が[数値型]でフィールドサイズが[長整数型]となっていました。長整数型はLongIntegerといって、4バイトで表現できる[-2,147,483,648~2,147,483,648]の範囲の値を扱えることとなっています。

貼り付けたかった値は"30.00%"や"70.00%"といった小数点第2位までを指定した数で、貼り付けたときに長整数型になると0.3は0に、0.7は切り上げで1になって貼り付けられていたようでした。

書式とは

データシートビューでの表示方法を指定できる設定項目です。例えば、[パーセント]を指定すると"%"で表示、[通貨]を指定すると"\"が付いたりします。

コピー元のExcelの書式はパーセント表示の設定を行っていましたが、貼り付け先の書式設定が未設定だったため、パーセンテージ表示されなくなっていたという訳です。Excel内でデータをコピーするときは、書式もコピーすることが多いので、意識することなく%の値もコピー出来てたんですね。

対処

小数点表示のパーセントデータをコピーしてくる場合は、以下の設定にしておきます。

フィールドサイズ:倍精度浮動小数点型
書式:パーセント

設定手順

  1. Accessを起動
  2. Accessの該当テーブルを右クリック>[デザインビュー]をクリック
  3. 設定したいフィールド名をクリック
  4. 下側の[標準]タブをクリック
  5. フィールドサイズで[倍精度浮動小数点型]を選択
  6. 書式で[パーセント]を選択
  7. [保存]ボタンをクリック

保存せずにデータシートビューに切り替えようとすると、「テーブルを保存しても良いか?」ということを聞かれます。その場合は、[はい]ボタンをクリックすればOKです。

原因の調査方法

今回、どうやって原因を突き止めたか?ですが、設定項目をとにかく見直すでした(笑)分からない設定項目や選択値があるのなら、ひとつずつその意味も調べました。もし、上手くいっているフィールドがあるのならば、その比較をするでも良いと思います。

さいごに

今日は思わぬところで「なんでこうなる?!」という調査をしたわたあめでした。ExcelもAccessも同じOfficeだし、アプリケーション間でのコピーだとしても書式引き継いでくれたら便利だな、などと考えていました。

ただ、分からないことを調べることで、便利そうな設定項目を発見できたりと、寄り道で肖る知識って沢山あるんですけどね。(そういう知識って後々で効いてきたりする!)

今日もお疲れさまでした。それでは、また。

flier(フライヤー)