こんばんは、わたあめです。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内でデータをコピーするときは、書式もコピーすることが多いので、意識することなく%の値もコピー出来てたんですね。
対処
小数点表示のパーセントデータをコピーしてくる場合は、以下の設定にしておきます。
フィールドサイズ:倍精度浮動小数点型
書式:パーセント
設定手順
- Accessを起動
- Accessの該当テーブルを右クリック>[デザインビュー]をクリック
- 設定したいフィールド名をクリック
- 下側の[標準]タブをクリック
- フィールドサイズで[倍精度浮動小数点型]を選択
- 書式で[パーセント]を選択
- [保存]ボタンをクリック
保存せずにデータシートビューに切り替えようとすると、「テーブルを保存しても良いか?」ということを聞かれます。その場合は、[はい]ボタンをクリックすればOKです。
原因の調査方法
今回、どうやって原因を突き止めたか?ですが、設定項目をとにかく見直すでした(笑)分からない設定項目や選択値があるのなら、ひとつずつその意味も調べました。もし、上手くいっているフィールドがあるのならば、その比較をするでも良いと思います。
さいごに
今日は思わぬところで「なんでこうなる?!」という調査をしたわたあめでした。ExcelもAccessも同じOfficeだし、アプリケーション間でのコピーだとしても書式引き継いでくれたら便利だな、などと考えていました。
ただ、分からないことを調べることで、便利そうな設定項目を発見できたりと、寄り道で肖る知識って沢山あるんですけどね。(そういう知識って後々で効いてきたりする!)
今日もお疲れさまでした。それでは、また。