PowerShellを使って経理データの加工をしてみる

経理であれば勘定科目コードに科目名を付与したり、部署コードに部署名を付与したりすることが良くあることでしょう。システム的にコードと名称の両方を持つとデータ量が増加してしまうなどの理由で、名称はデータとして持たずコードだけがデータとして保存されます。今回はPowershellを使って名称の付与を行ってみましょう。

処理対象となるデータ

例えば、貸借対照表を出力すると下図の残高テーブルのように科目コードと残高のCSVが出力されるとしましょう。

残高テーブル.CSV
1111, 800000
1131, 540000
1210, 1000000
1421, 97000
1990, -108000

もちろんこのままでは、分析も何もできないため科目コードに科目名を付与する作業が必要となります。科目コードと科目名のデータも以下のCSV形式であるとします。

勘定科目名テーブル.CSV
1111, 現金
1131, 売掛金
1210, 商品
1220, 製品
1250, 原材料
1260, 仕掛品
1410, 前渡金
1421, 前払費用
1450, 未収入金
1990, 貸倒引当金

以下ではこれらのCSVファイルを使ってデータを加工していきます。

PowerShellを使った科目名の付与

CSVファイルをExcelで開いてVLOOKUP関数で残高テーブルに科目名を付与することもできますが、今回はPowerShellを使って同じことをしてみたいと思います。

CSVデータの読み込み – Import-Csvコマンドレット

PowerShellでCSVファイルを扱うためには、Import-Csvコマンドレットを使います。Import-Csv の後にファイル名を入力してください。

上のように文字化けして表示される場合は、オプションに −Encoding Default を指定してください。文字化けが解消されます。

Import-CsvコマンドレットはCSVの1行目をヘッダー行として認識してしまいます。今回のように1行目からデータが始まっている場合は、オプションに -Header <string[]> を指定してください。

きれいに表示されました。

変数にデータを記憶する

CSVデータをメモリに保存するため空の連想配列の宣言を行います。

変数は宣言しただけでは何も表示されません。次に、この変数 $dic に勘定科目名テーブル.CSVのデータを保存します。

¦ の後ろにある % は ForEach-Object のエイリアスで、渡された配列を順次処理する記号です。順次処理の中では以下の代入処理が行われています。
1回目  $dic[“1111”] = “現金”
2回目  $dic[“1131”] = “売掛金”
3回目  $dic[“1210”] = “商品”
・・・
10回目 $dic[“1990”] = “貸倒引当金”

現時点で $dic の中身は次の通りです。コードと科目名が紐付いたデータになっています。

$dic のデータを使って残高テーブル.CSVの科目コードに科目名を付与します。以下のコマンドを入力すると科目コードの隣に科目名が表示されて出力されます。

Out-GridViewを使ってExcelへ貼付け

無事に科目名を付与することができましたが、このまま黒い画面に数値が表示されているだけでは加工するのに不便です。そこでOut-GridViewコマンドを使ってExcelにコピー&貼付けできるようにします。先ほどのコマンドの後ろに ¦ Out-GridView を加えます。

別ウィンドウとして次の画面が表示されます。

このウィンドウ上で Ctrl + A を押せば全データが選択できますので、その状態で Ctrl + C でデータをコピーして、Excelを開き Ctrl + V すれば、きちんとExcelに貼り付けることができます。

後は、通常のExcel操作でデータの加工や分析を行うことができます。

まとめ

実務でこのようにPowerShellを使っている人はほとんどいないでしょう。同様のことをする場合には、ExcelのVBAを使うのではないでしょうか。私がPowerShellを使う理由は、VBAが嫌いだからとPowerShellならば会社のどのPCにも必ずインストールされているからです。また、PowerShellはCSVファイルを扱うのに便利なコマンドがたくさんありますし、Out-GridViewなどのツールもあるのでどのプログラミング言語よりも経理向きの言語だと感じます。

経理への普及の最大の障害は学習コストの高さだと思いますが、AIに職を奪われると恐れている暇があるくらいなら、勉強してAIを操作する側になれるよう努力した方がいいはずです。私もプログラミングはまだまだ初心者ですが、少しずつでも学んでいこうと考えています。

PowerShellの習得は本を読むよりも必要に応じてネットで調べて動かしてみるのが1番早いと思います。その際に手元にこのようなリファレンスがあれば便利でしょう。