プロが教える店舗&オフィスのセキュリティ対策術

大量の計算式の中に含まれている
AA(BBB)やSS(CCC)のような、丸かっこで囲われた文字列を抽出し、かっこの前にある文字列を後ろにくっつけてたいです。※文字列と文字列の間にピリオド(.)を追加したい。
置換前 AA(BBB)
置換後 BBB.AA

このような置換をしたいのですが、1つのセルの中に複数個このような置換をしたい文字列が出てきます。
例)置換前
A = 100.0
QQ(ABC) = ZZ(DEF) - 50.0
IF(QQ(ABC) < 0.0) THEN
SS(ABC) = 100.0
END IF


例)置換後
A = 100.0
ABC.QQ = DEF.ZZ - 50.0
IF(ABC.QQ < 0.0) THEN
ABC.SS = 100.0
END IF

どのように組めば上記のような置換ができるでしょうか?
よろしくお願いします。

A 回答 (2件)

こんにちは



>丸かっこで囲われた文字列を抽出し、かっこの前にある文字列を後ろに~
ご説明だけの条件だと、
 QQ(ABC) = ZZ(DEF) - 50.0

 DEF.ABC.QQ = ZZ - 50.0
とかになりそうですが・・・

ですので、「()内の文字列も、その前の文字列も連続した英大文字だけを対象とする」という条件を勝手に付加しました。
(条件が異なる場合でも、同様の方法で可能でしょうから、修正することでできるものと思います)

◇ 対象文字列がA1セルにあり、B1セルに置換後を表示すると仮定して、
With CreateObject("VBScript.RegExp")
 .Global = True
 .Pattern = "([A-Z]+)\(([A-Z]+)\)"
 Range("B1").Value = .Replace(Range("A1").Text, "$2.$1")
End With

とかではいかがでしょうか?
(ご提示の例であれば、置換前は置換後のようになります)
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございます。
なるほど。
条件定義が不十分のようですね。
ちなみにカッコ内の文字列には英大文字のみではなく、数字と記号(半角ハイフン‐)が含まれます。
諸事情で今回の件、置換する必要が無くなったためいったん質問を閉めさせていただきます。
また条件定義をやり直して再質問させていただきます。

お礼日時:2022/11/01 06:41

計算式を一度別シートにコピペして、CTRLキーとHキーで置き換えタブ開いて、変換してから戻せばいいんじゃね。

    • good
    • 0
この回答へのお礼

うーん・・・

ご回答ありがとうございます。
置換パターンが数百を超えるためVBA等でなんとかならないかなと質問させていただきました。
今回は諸事情により置換する必要が無くなったため質問を閉めさせていただきます。

お礼日時:2022/11/01 06:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!