2015年11月7日土曜日

Google Spreadsheet - 正規表現を使った数式の一括置換

カスタム関数化とは別のアプローチで、機能修正・追加時の編集コストを抑える方法。
API の setFormula で数式置き換えを検討してたけど、便利な置換機能があった。

正規表現を使って、数式を一括して書き換える。


  1. 対象のセルを選択(範囲若しくは、Ctrl+クリックで複数選択)
  2. [編集][検索と置換]
  3. "数式も検索", "正規表現を使用した検索" にチェック
    1. 大文字込み時にチェックが入りますが、混在している場合は任意で外す
  4. 検索
    1. まず、検索したい文字をコピー&ペースト
    2. そのうち記号の前に \ (円マーク若しくはバックスラッシュ)でエスケープを置く
    3. また、置換時に参照したい文字は丸括弧で囲む
    4. 数式中の空白等、は \s* に置き換え
  5. 置換
    1. 通常通り置換したい文字
    2. 検索の時に括弧で囲んだ中の値を $1 で置き換え
    3. 文字列中にドル記号を含ませたい場合は、その文字をエスケープ

例: 引数の入れ替え

対象の文字列
"FUNC(B1:B2, B3:B4)", "FUNC(C4:C5, C6:C7)", "FUNC(FOO, BAR)"
検索(正規表現)
FUNC\(([\w\:]+)\s*,\s*([\w\:]+)\)
置換
FUNC($2, $1)
置換結果
"FUNC(B3:B4, B1:B2)", "FUNC(C6:C7, C4:C5)", "FUNC(BAR, FOO)"

※ 数式が入れ子になってる場合等は対応できないので、適用できるのは簡単な表現の式のみ。

0 件のコメント:

コメントを投稿