2014年9月23日火曜日

EXCELのフィルタでは出来ないけど、rubyで出来る複数列フィルタ

 EXCEL文書で、1行が特定の対象(行)に関わる複数の情報(列)で構成されるのであれば、複数の列で検索したくなることがある。
 このようなケースで、EXCELの「フィルタ機能」を使うことになるが、残念なことに複数の列にフィルタをかけると、すべての列に特定文字があるケースしか抽出できない。すなわち、AND条件で絞られることになってしまう。
 どこかの列に探したい文字列が散在するケースを抽出できない(OR条件)。EXCELシートをSQLで検索すれば、可能だが、SQLの知識が必要となり、ハードルが高い。
 そこで、登場するのが、ruby1行(ワンライン)プログラム 。プログラムといっても、1行なので、それほどハードルは高くない!!!

やり方は、以下。

1)EXCELをCSVへ変換する。
 セル内改行やセル内カンマを上手に除去する必要あり。詳しくは、これ。
 EXCELで困ったときの小技 うまくCSV化できないなら、Rubyを使え
 2)ルビー1行プログラムで複数列フィルタをかける。詳しくは、ここ。
 ルビーワンライナー ルビー1行プログラミングで仕事を効率化


1行ルビーは、こんな感じ。

ruby -ne 'puts $_ if $_include ?("くるみ")' a.csv >o.csv
前提として。1)で作成した、a.CSVにはEXCELをCSV化したデータがある

ここで一息のコーナーです。

私のrubyバイブルは、Cuzicさんの
・Ruby on Windows ~rubyで丸投げルーチンワーク 
 マイコミ(毎日コミュニケーションズ)
WindowsのEXCELやInternet ExplorerでのRubyの活用方法が満載です。




0 件のコメント:

コメントを投稿