最近excelで少々まとまった枚数の資料を作らなければならなくなった。資料自体は枚数は多いが定型なので、マクロでバンバン作っていく。楽勝だぜ・・・のはずだったが、Excelの不思議仕様でちょっと困ったちゃんだ。ちなみにVerはSP3を適用したOffice2003である。
まず一つ目は、有名な
小数計算の誤差だ。費用を係数を掛けて割り当てたりすると、なぜか合計が合わない。それはみんなこのクサレ仕様のせいである。本来0であるべきところが-0とかになっていたら誰だって気がつく。この仕様のおかげで差異が出てしまうと、その表自体の信憑性が疑われるので困る。俺を陥れるための罠に違いない。
二つ目はピボットテーブル関連。今回の資料はDBからデータを取り込んでピボットテーブルを作り、そこから
GETPIVOTDATA関数でデータを抽出して作成の繰り返しなのだが、元となるピボットテーブルのデータを更新してもなぜかGETPIVOTDATA関数で呼び出す数値が変わらないのだ。これはブックを閉じて再度開くと、最初の一回だけはきちんと更新される。データを更新させるにはダミーのシートを追加・削除してやるとよいみたいなのだが、なんだか本当に意味不明。
三つ目はシートのコピー・移動に関するものだ。今回の資料では、資料作成用のブックで資料を作り作成されたものは違うブックにどんどん移動させるという形式をとっているのだが、ある一定枚数のシートを移動させるとシートの移動が出来なくなってしまう。しかし、シートのコピーは出来るのだ。遅いPCでやれば実感できるのだが、シートのコピー・移動ではシートの移動の方が圧倒的に速い。速いのだからメモリも食わないのだろうと想像しているのだが、なぜか速くて効率のいいと思われる移動がダメになる。一旦すべてのブックを閉じて再度開けば移動できるようにはなるのだが、面倒だ。
まぁ、いずれも得意の「仕様」なんだろうね。;p
二つ目だけですが、ピボットテーブルのツールバーに「すべて更新」ボタンを追加して、それで更新すると、GETPIVOTDATA関数も更新されると思います。