linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

インポートデータ作成によく使いそうな基本的なExcel関数と正規表現

みなさん、こんにちは、まーしーです
遅めの夏休みを満喫していますが皆さんいかがお過ごしですか?

さて、CMSを利用したりしているときはデータを整形してインポート用のデータを作ったりすることはよくあるのではないかと思います。
プログラム書いてガリガリできる人たちは色々魔法を使えたりするのかもしれませんが、そうもいかない場合もあるでしょう。

よく使いそうなのはExcelをつかってCSVを編集して、それをテキストエディタで置換とかではないでしょうか?
すごく基本的な話ばかりですが、まずは簡単なExcelの話からでも。

ROW()で行番号を取得する

例えば連番をつくって値を設定したいとします。

その場合にセル自体の行番号を取得するにはROW()を使います。

=ROW()

と書けばそのセルの行番号を取得することが出来ます。

110825-01.jpg

特定のセルの行番号取得はROW(A1)みたいな感じでセル番地を指定すればいいでしょう。

実際のところ単純な連番であれば、1,2,3と1行ずつ入れた物を繰り返せば(ドラッグすれば)できますね。

行番号を元に計算する

取得した行番号や値を元に計算したりする場合があるかと思います。
計算した結果の値を整える関数としては  

四捨五入:ROUND(数値,桁数)
切り上げ:ROUNDUP(数値,桁数)
剰余:MOD()

使いそうなのはこのあたりではないでしょうか?

四捨五入、切り上げなどは桁数をゼロにして整数にすることが多いのではないかと思いますので書くとしたら

=ROUNDUP((ROW()/3),0)

こんなかんじで、行番号の値を割って切り上げるとかも可能ですね。
この場合だと1,1,1,2,2,2みたいになっていきます。

110825-02.jpg

同じ番号を繰り返してやりたいときに使えますね。

セルを統合

CSVにもともとあった定型文とExcelで計算した値などをセル同士で統合することがあるかもしれません。

セルの値を統合するにはたとえばC1のセルで

=A1&B1

みたいに書けば値が統合できますね。

110825-03.jpg

この辺はなんかもっとうまい方法がありそうなきはしますが、連番等で取得した値と定型文をつなげることが出来ます。

正規表現で行頭、行末に追加。

CSVが出来てしまえばそこまで大変じゃないかと思います。
魔法が使える人はすごいことできそうな気はしますが、置換するためのキーワードさえ入れておけばそれを検索・置換でいけると思います。

テキストエディタで開いたCSVファイルを編集置換していくと思います。

行頭に何かを入れるという場合は

^

行末に何かを入れたいという場合は

$

を指定するだけです。
行頭、行末に定型句を入れる場合はこれで簡単に出来ますね。

行頭、行末にも置換用のキーワード入れておけば上記のことなんかは普通に検索・置換でできますが、正規表現を使ってみるというのもわるくないもんです。

ということで

基本的な話ばかりですが、この辺が分かるとデータの修正もだいぶやりやすくなりますね。
Excelは関数が膨大にあるので使い方を覚えるともっと色々出来そうな気がします。