日々記録されたCSVファイルをクエリで集計し、ピボットテーブルで分析しています。
使用中にピボットテーブルの変な癖のようなものがあることに気づきましたので、記録を残しておきます。
【状況】
従業員に割り当てたIDの数値に対し、集計したデータを時系列でまとめてグラフ化していました。
氏名の表示にはVLOOKUPを使い、IDを検索条件とし、従業員の一覧テーブルを参照範囲としていました。そのため、VLOOKUPはピボットテーブルとは無関係に動作するものと考えていましたが、普段とは違う「#N/A」エラーが出てしまいます。
ただし、このエラーは特定のID番号でのみ発生し、全ての番号で発生するわけではありません。
※同じシート内でピボットテーブルを参照せずVLOOKUPを使用するとエラーは発生しません。
【エラーメッセージ】
ピボットテーブルではIDをフィルタとして扱っています。そのためIDの番号の従業員のデータのみを使って集計・分析が行われます。
存在しないIDを入力すると以下の確認ダイアログが出ます。それと同じようなことが存在するIDでもまれに発生します。その時、VLOOKUPでもエラーが出るように思われます。
上記、IDの項目なのに名前と表示されています。ピボットテーブルに名前欄はなく、VLOOKUPで参照するのみです。
※一度上記ダイアログが出てOKしてしまうと、常に数式のエラーが出るようになります。回避するにはデータを保存しないようにします。
【原因】
エラーセルの検証機能を使って確認したところ、ID欄をセル番号で参照した後、文字列として数字を扱っているようでした。
式:=VLOOKUP(B6,テーブル,3,FALSE)
テーブルの書式はクエリで数値として設定されています。
IDの欄の書式はID毎に異なっています。書式の左揃え、中央揃え、右揃えをしてみると、全てのIDにその書式が設定されるのではなく、IDを変更すると書式も変わります。
これは、入力されたIDを数値とするか文字列とするかもそれぞれことなる可能性があります。(※今回はID欄に標準や数値の書式を設定してみましたがエラーの原因とは無関係に振る舞っていました)
【対策】
そもそも、同じ入力欄(セル)で入力した数字によって書式が勝手に変わるということ自体が異常な気もしますが、まずは現在起こっているエラーへの対処として次の数式を入れてみました。
式:=VLOOKUP(VALUE(B6),テーブル,3,FALSE)
VALUE関数で文字列を数値として扱わせます。これによってエラーは解消されました。
かなりイレギュラーなエラーなのかもしれません。
検索するとピボットとVLOOKUPが一緒に検索されているケースは多々あるようですが、このような状況についての回答は見当たりませんでしたので、記録として残しておきたいと思います。