Calcでセル内の文字をセル内の改行に置換したいのですが

こんにちは
calc 7.3.6.2を使っています。

セル内のある文字(★とします。)を改行に置換したいのです。

「検索と置換」ダイアログを使って検索に欄に★を入力し、
置換欄に「¥n」(半角の¥と半角のnです。)
、正規表現にチェックを入れてから
置換すると「\n」という文字列に置換されてしまいます。

逆に検索欄に¥nを入れればセル内の改行は他の文字に置換できます。

セル内の文字をセル内の改行に置換することはできないんでしょうか?

1 Like

「検索と置換」機能でそれを行う方法は存じ上げませんが、表計算関数を使う方法でよければ「=substitute(A1,"★",CHAR(10))」が使えます(本サイトの制約から関数名を大文字で入力することが出来ませんでした…orz)。
結果をコピーして[編集]>[形式を選択して貼り付け]>[テキストのみ貼り付け]などとすることで最終的に数式を外してしまうことは可能でしょう。
ご要望にズバリ応える方法ではありませんが、ご参考まで。

1 Like

質問者さんには関数を利用する方法は受け入れられないようですが、
検索して記事をみる方のために関数を利用する方法の補足をします。
少し手間ですが次の方法でも置換を行うことができます。

  1. 置換したいセルの範囲を選択
  2. 検索と置換のダイアログを開く [ Ctrl + H ]
  3. オプションの設定
    • ☒ 現在の選択範囲のみ
    • ☒ 正規表現
    • 検索場所 : 値
  4. 変換文字の入力
    • 検索 : 「 .+ 」 対象セルを絞り込みたい場合は「 .+★.* 」などを使う
    • 置換 : 「 =SUBSTITUTE("&","★",CHAR(10))
    • (置換式は「 =REGEX("&","★",CHAR(10),"g") 」でも同じ)
  5. 「すべて置換」を実行
  6. ダイアログは開いたまま続けて、変換文字の書き換え
    • 検索 : 「 .+ 」のまま
    • 置換 : 「 & 」
  7. 「すべて置換」を実行

これは、マクロでやれば良いことをダイアログ上でやっているだけです。

4 Likes

nobuさん、ありがとうございます。

置換欄に関数を含んだ式そのものを指定できるんでね。
そして、一旦関数に置換してから、表示されてる関数の結果に置換するんですね。

すべての文字列を表す.+で検索して、全部の文字列を表す&を使って、substitute式に置換する。
なるほど、なるほど。

正規表現を色々試してみましたが、
()で検索して$0,$1で置換時に使えるし、便利ですね。

検索と置換ダイアログで改行を作りたいという私の希望に近いと思います。.

ありがとうございました。

JO3EMCさん、ありがとうございます。

substitute関数ですよね。
できれば、関数を使わずに検索と置換のダイアログでできないかな~?
と思っています。

改行を他の文字に変換することができるので、
他の文字を改行にするのも可能なのではないかな?
と思っています。

ありがとうございました。

自信はないけど、出来ない気がする。

https://opengrok.libreoffice.org/xref/core/unotools/source/i18n/textsearch.cxx?r=91ba9654#366

1 Like

see also:

https://bugs.documentfoundation.org/show_bug.cgi?id=43107

1 Like

himajin100000さん、ありがとうごさいます。
ソースを見たのは初めてです。

バックスラッシュについては何も考慮されてない感じはしますね。
(パラッと見ただけなので外してるかも)

バグというか、仕様という感じですかね。

私は置換してくれた方がいいんですけど。