Google Spreadsheet(スプレッドシート)で、こんなエラーを見たことありませんか?
これは数式に意図しない文字列などが含まれている場合などに発生する「数式解析エラー」と呼ばれるものです。
例えば、下記のように数式中の数字に桁区切りのカンマ「,」が付いている場合でもこのエラーが発生します。
=123,456
あるサイトから表(テーブル)をコピペした場合など、このエラーが発生したりします。1つや2つのエラーならば手動で修正できますが、大量に発生した場合は、一括修正してしまいましょう。
ここでは、数式中の必要なカンマ「,」は残しつつ、数字の桁区切りカンマだけを取り除く方法を紹介します。
「検索と置換」で数式内の桁区切りカンマを一括削除
スプレッドシートの「検索と置換」で便利なのは、正規表現を使えることです。正規表現を使用することで必要なカンマ「,」は残しつつ、数字の桁区切りカンマだけを削除します。
メニューバーの「編集」→「検索と置換」を開きましょう。
次のような、ダイアログが表示されるので、「正規表現を使用した検索」「数式内も検索」のチェックボックスを有効にして、次のように正規表現を入力します。
検索範囲は「すべてのシート」「このシート」「特定の範囲」から選択できるので適宜選択してください。
これで数式内の桁区切りカンマを一括削除できます。
正規表現の説明
検索ダイアログに入力した正規表現
,([0-9]{3})(?!.*\))
これは、
「カンマの後ろに3つの数字が並んでいるパターン、ただし、ヒットしたパターン以降に)が含まれないもの」を検索し、ヒットしたパターンの数字部分だけを抽出する
という意味の正規表現になります。
「置換後の文字列」で設定した$1には抽出した数字部分が格納されています。
ちなみに、「ヒットしたパターン以降に)が含まれないもの」という条件をつけている理由は、関数の中のカンマが置換されるのを防ぐためです(例②)。
例①
下記の数式に対して、実行したとします。
=123,456,789
この場合、正規表現の検索でヒットするバターンは「,456」「,789」になります。
$1にはそれぞれ、「456」「789」が格納されるので、「,456」→「456」、「,789」→「789」に置換されます。
結果、「=123,456,789」→「=123456789」と置換され、カンマだけが削除されます。
例②
下記の数式に対しては、どうでしょうか。
=sum(100,200,300)
この場合は、sum関数末尾の「)」が存在するので正規表現が成立せず、「100,200,300」の部分は保持されます。