Excelのピボットテーブル用のデータをGAMSから出力する方法

エクセルでデータを扱う方法として、ピボットテーブルというものがあります。

まだ、私自身あまりよく理解はしていませんが、データを調べたり、データからグラフを作成するのに非常に便利な機能のようです。GAMSの計算結果などをエクセルで扱うときにも使えそうですし、GAMSのデータは多次元の配列データが多いので、ピボットテーブルの機能とは特に相性が良さそうです。

ただし、一つ問題があります。GAMSのデータをエクセルに出力するのには、GAMSに付属のgdxxrw.exeというプログラムを利用するのが普通ですが、ピボットテーブル用に使うデータを出力するのにgdxxrw.exeを使うのは少し面倒だからです(gdxxrwを使うときに引数で複雑な指定をしなければいけないので)。このページでRutherfordが、GAMSからピボットテーブル用にデータを出力するためのライブラリを配布しています。これを使えば、簡単な指定によってGAMSからピボットテーブル用データをエクセルに出力することができます。このページをそのままpivotdata.gmsという名前を付けて、GAMSのinclibフォルダに保存すれば利用できます。

Rutherfordはこれと一緒に使い方を説明したサンプルのコードを配布していますが(これ)、私も自分の勉強がてらサンプルを作成してみました。

  • takeda_pivot_example.gms: これがサンプルのプログラムです。GAMSで実行します。
  • pivotdata_alt.gms: Rutherfordのpivotdata.gmsは出力するエクセルファイルの拡張子がxlsに決めうちされてしまっています。それでは少し不便ですので、拡張子は自分で指定するように修正しました。このファイルをGAMS\inclibフォルダにpivotdata.gmsという名前で保存すれば使えます。
  • sample_excel.xlsx: 上のサンプルのコードから作成したエクセルのファイルです。ピボットテーブル用のデータを出力すれば、後はエクセルの方でピボットテーブルを使って、いろいろ便利なことができます。

いつもGAMSの計算結果をエクセルに出力して加工していますが、手作業の部分が多くて結構大変です。ピボットテーブルは覚えるのが大変そうですが、一度使えるようになれば、これまで手作業でやっていたことを自動化できそうなので、ちょっと勉強してみようと思います。