[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[491] セル内の文字列移動について

メイベル [2019/03/09 12:35:15]

いつもお世話になっております。
セル内の任意の文字列を先頭に移動したいのですが、マクロで出来る方法があればご教授願います。

あああああ:いいいいい:ううううう
あああああ:いいいいい
かかかかか:ききききき
かかかかか:ききききき:くくくくく

上記セル内を

あああああ:いいいいい
あああああ:いいいいい:ううううう
かかかかか:ききききき
かかかかか:ききききき:くくくくく

というように指定した文字列を先頭に移動したいのです。

尚、先頭にしたい文字列はセルごとに違うため
特定ではなく「任意」である必要があります。

選択した列の、指定した文字列を含むセル内のみ
指定した文字列を先頭に移動したいのですが・・・。

ただ、

あああああ:いいいいい:ううううう
あああああ:いいいいい

のように移動したい文字列と同じテキストが入る文字列もあります。
指定した文字以外は反応しないようにしたいです。

わかりにくい文面で申し訳ありません。
宜しくお願いいたします。

Re: [491] セル内の文字列移動について

あすかぜ [2019/03/09 13:06:57]

バージョン 2.0 以降であれば正規表現検索で実現できそうです。

1. [検索(S)]-[検索・置換(F)...] メニューで検索・置換ダイアログを開く
2. 「検索する文字列(S)」に「(.*\n)(あああああ:いいいいい\n)」と入力
3. 「置換後の文字列」に「$2$1」と入力
4. 「正規表現検索(E)」にチェックを入れる
5. 「検索対象(G)」で「現在の列」を選択
6. 「すべて置換(A)」を実行

これでセル内の「あああああ:いいいいい」という行が先頭に移動すると思います。

試してみてください。

Re: [491] セル内の文字列移動について

メイベル [2019/03/09 14:05:41]

返信頂きありがとうございます。

ご指示いただきました通りに試してみましたが、
「0個のセルを置換しました」とコメントされ、対象のセルが反応しませんでした。

ご指示いただいた「検索する文字列(S)」に入力する文字列は、
(.*\n)(あああああ:いいいいい\n)ですが、

実際には、

(.*\n)(ABCDE(エービーシーディーイー):FGHIJ(エフジーエイチアイジェイ)\n)のように
アルファベットに対して()内にフリガナが入っています。
()も半角全角、統一ではありません。

文字列中に()も含むのですが、それも関係ありますでしょうか?

また、$2$1は順番を表すものだと思いますが、
先頭に移動したい文字列は、2行目だったり4行目だったり様々なのです・・。

説明不足で
何度も申し訳ありませんが、宜しくお願いいたします。

Re: [491] セル内の文字列移動について

あすかぜ [2019/03/10 10:02:03]

はい、正規表現検索では「(」「)」は特別な意味を持つので、「\(」「\)」と記述する必要があります。

(.*\n)(ABCDE\(エービーシーディーイー\):FGHIJ\(エフジーエイチアイジェイ\)\n)

で試してみてください。

$1 と $2 は検索文字列中の () に対応します。「.*」は任意の文字列、「\n」は改行を表します。
$1 は(.*\n) (「ABCDE」の直前の改行まですべて)に、$2 は (ABCDE\(エービーシーディーイー\):FGHIJ\(エフジーエイチアイジェイ\)\n) に対応し、$2$1 でそれを入れ替えています。
$1 内に複数の改行を含められるので、先頭に移動したい文字列が 2 行目以外にあっても移動できるはずです。

よろしくお願いします。

Re: [491] セル内の文字列移動について

メイベル [2019/03/11 10:36:53]

返信ありがとうございます!
大方うまく入れ替え出来ました!

先頭に移動したい文字列でキーワードは同じなのに反応するものとしないものがありました。
先頭にしたい文字列が一番下にあるとその現象が起きるようですが、
その場合の入力方法もご教授頂けますでしょうか?

何度も申し訳ありません。よろしくお願いいたします。

Re: [491] セル内の文字列移動について

あすかぜ [2019/03/11 23:02:42]

最下行は
(.*\n)(ABCDE\(エービーシーディーイー\):FGHIJ\(エフジーエイチアイジェイ\))$
のように最後の \n のかわりに $ を置くことで置換できそうです。

マクロも書いてみました。マクロの入力ボックスでは () もそのまま書けばよいので、こちらの方が楽かもしれません。
https://www.asukaze.net/soft/cassava/macro/asukaze/bbs491_20190311.cms

よろしくお願いします。

Re: [491] セル内の文字列移動について

メイベル [2019/03/13 13:51:07]

ありがとうございました!
これでだいぶ捗ります!
今後ともよろしくお願いいたします。

スレッド一覧に戻る返信