LibreOfficeのcalcで正規表現を使って一括置換で改行を追加する方法

置換前

置換後
例えば、1つのセルの中に「氏名(よみがな)」みたいなデータが並んでいて、よみがなの前に改行を入れたい
こういうときに一括で改行を挿入する方法を解説します
大まかな手順を説明すると
- 対象のセルを範囲選択する
- 「検索と置換」で「(」を「char(10)(」に置換する
- 「検索と置換」で「数式」を「値」に置換する
以下に詳しく見ていきましょう
対象のセルを範囲選択する

範囲選択
まずは、列を丸ごと選択するなどして、改行を入れたいセルを範囲選択状態にします
「検索と置換」で「(」を「char(10)(」に置換する
キーボードのショートカット「Ctrl + H」で「検索と置換」のウィンドウを呼び出します

検索と置換
「検索」欄に
.+
「置換」欄に
=SUBSTITUTE("&", "(", CONCAT(CHAR(10), "("))
「他のオプション」の
「現在の選択範囲のみ」にチェック
「正規表現」にチェック
「検索場所」を
「値」に設定
上記の設定をしてから
「すべて置換」
置換結果の確認(その1)

置換後
置換を行った結果、目的通りに対象のすべてのセルで「(」の前に改行がされています
今回の例では「置換」欄に
「=SUBSTITUTE(“&”, “(“, CONCAT(CHAR(10), “(“))」
と書きましたが
「=SUBSTITUTE(“&”, “,“, CONCAT(CHAR(10), “,“))」
と書いてやれば
カンマの前で改行
「=SUBSTITUTE(“&”, “ ”, CONCAT(CHAR(10), “ ”))」
と書いてやれば
全角スペースの前で改行
のように任意の位置に改行を一括挿入できます
セルの中身は数式
ただし、置換後のセルを見てみると、
見た目としては「
潮紗理菜
(うしお さりな)
」となっているものの
セルの中には
「=SUBSTITUTE(“潮紗理菜(うしお さりな)”, “(”, CONCAT(CHAR(10), “(”))」
という数式が入っています

セルの中身が数式
数式から値に変換
再びセルを範囲選択してから、「検索と置換」を開きましょう

検索と置換(数式から値に変換)
今度は、
「置換」欄を
「&」にして
「すべて置換」を実行します
置換結果の確認(その2)

セルの中身がテキスト
2回目の置換により
セルの中身が
「=SUBSTITUTE(“潮紗理菜(うしお さりな)”, “(”, CONCAT(CHAR(10), “(”))」
という数式から
見た目と同じ「
潮紗理菜
(うしお さりな)
」というプレーンなテキストに変換されました
置換に使った正規表現や数式の解説
正規表現というのは記号によって文字の集合体を扱うための特別な表現です
.+
「.+」すべての文字列に一致する正規表現です
「.」は任意の1文字を意味する正規表現
「+」は直前の文字の1回以上の繰り返し
&
「&」は検索で引っかかった文字列そのもの
CHAR(10)
「CHAR(10)」は改行記号
SUBSTITUTE
「SUBSTITUTE(A, B, C)」で
Aというテキストの中に、Bという文字が含まれていたら、Cという文字に置換するという数式
たとえば、セルに
「=SUBSTITUTE(“あいうえお”, “い”, “x”)」と書けば
「あxうえお」と表示される
CONCAT
たとえば、セルに
「=CONCAT(“あ”, “い”)」と書けば
画面上には「あい」と表示される
複数のセルを連結して1つのテキストにしたいときや
記号とテキストを連結したいときに使う
コメント