シーゴの Excel 研究室

タイトル変更しました (旧称:今日を乗り切るExcel研究所)

タテとヨコに集計したい

今回は、既存の表から飛び飛びのセルをタテヨコに集計する方法を調べます。

縦横集計

飛び飛びの位置にあるセルを選んで集計してみたいことがあります。

例えば、何かのデータの集計表があって、そこからさらに別の軸で集計したい時、つまり行方向と列方向で共通の項目の交差する「格子の目」にあたるセルを拾って合計値を見たいときなどです。

このような集計方法を何と呼ぶのかよく分からなかったのですが、この記事では仮に「縦横集計」と呼ぶことにします。

やりたいことは結局クロス集計なので、ピボットテーブルだったり、テーブル形式の元データがあれば集計し直すだけです。

ただそうもいかない表形式の場合もありますし、ちょっと値を確認したいだけの時にはデータをいじらずにお手軽に集計できたいです。

本記事では、Excel の基本機能を使って、お手軽に縦横集計を確認する方法がないか探っていきます。

続きを読む

CSV の任意の列のフィールドをダブルクォーテーションで囲むバッチ

今回は、CSVファイルに列指定でフィールドクオートするバッチを作成しました。

クォートする列を選びたい

だいぶ前の記事で、CSV の ダブルクォーテーション の囲みを付け直す方法について紹介しました。

その中で「全てのフィールド」をクォートする(タイプ4の)バッチを紹介しましたが、機会があれば「値の種類(文字列、日付)」によってクオートするバッチ(タイプ3)も作成したいと思っていました。

最近 PowerShell で CSV を扱うことがあって「フィールドの列を指定」してクォートするスクリプトを作成しましたので、これが代わりに使えそうです。

本記事ではそれを CSV のドラッグ&ドロップでも使えるよう、バッチにしておこうと思います。

ただし、処理が重いので大きなCSVファイルでは注意してください。

続きを読む

【Excel LAMBDA】組み合わせ編【ユーザ定義関数】

組み合わせ編

LAMBDA 関数を使った数式によるユーザー定義関数(カスタム関数)として、実用的かつコピペで使えるサンプルコードをまとめていきたいと思います。

使い方は以下の記事を参照してください。

www.shegolab.jp

本記事ではデータの組み合わせに関連する各種の関数を集めてみました。

続きを読む

【PowerShell】CSV の前処理の前処理をするスクリプト(その2)

今回も PowerShell を使った CSV の前処理の前処理のスクリプトの続きです。

値にカンマや改行を含む CSV

前回の記事で、CSV 形式のテキストの整形処理をする PowerShell スクリプトを作成しました。

大抵はそれで事足りると思うのですが、 一部のスクリプトについて、CSV 形式によっては対応しきれないものがあります。

フィールドが単純にカンマと改行で区切れれば問題ないのですが、クォートされて値にカンマや改行コードが含まれるような複雑な CSV は扱えません。

本記事ではクォートされたフィールドの処理にも対応した改善版のスクリプトを紹介します。

ただし、正規表現を使った置換処理を多用しているため、非常に重たくなっています。 巨大な CSV ファイルでは実用的なパフォーマンスが得られないかもしれませんので、ご承知おきください。

続きを読む

【PowerShell】CSV の前処理の前処理をするスクリプト(その1)

今回は Excel ではなくて、PowerShell という技術者向けの話題です。

PowerShell でテキスト処理

データ分析には「前処理」の作業が付き物ですが、CSV データに関してはその前にファイル形式としての体裁を整える、つまり「前処理の前処理」が必要になることがままあります。

結局やることはテキストファイルの加工なので、 Windows 上なら機能豊富なシェル環境であるPowerShell を使えば簡単に出来るはずです。

と思ってやってみたら、決して簡単なことではありませんでした。

PowerShell は言語やコマンドが高機能なわりにかなりのクセがあって意外と使いづらく、単純なテキスト処理でもなかなか一筋縄にはいかないのです。 調査や試行錯誤で、だいぶ時間をはたいてしまいました。

今回、記憶が蒸発する前に、先々 CVS 前処理でありそうなあらかたの処理を「コピペで使えるスクリプト」として作成しておくことにします。

続きを読む