[[20230709133359]] 『セル内の括弧で括られた文字の括弧を削除』(めがね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の括弧で括られた文字の括弧を削除』(めがね)

1行目のタイトル行に特定の文字が入っており、その文字のあとに()半角の括弧がついております。
このカッコを削除したいです。

北海道(ほっかいどう) → 北海道ほっかいどう

もしくは括弧内の文字ごと削除したいです。

北海道(ほっかいどう) → 北海道

下記のコードだと一部しか括弧が外れませんでした・・・

Sub Macro1()
'
oData = ActiveCell.Value

    Dim RegExp As Object
    Dim Cell As Range
'
    Set RegExp = CreateObject("VBScript.RegExp")
    RegExp.Global = True
    RegExp.Pattern = "[((].*[))]"
'
    For Each Cell In Selection
        Cell = RegExp.Replace(Cell, "")
    Next Cell
End Sub

よろしくお願いします。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 Sub test()
     Dim s
     s = Split(Range("A1"), "(")
     Range("A1") = s(0)
 End Sub
(フォーキー) 2023/07/09(日) 14:04:28

 RegExp.Pattern = "[((].*?[))]"
 とパターンのなかに一文字だけ ? を入れてください。
 それでたぶんうまくいくと思います。

 【簡単な説明】(求められていないと思われますが)
 単に .* だとマッチする最大の長さまで取り込みます。
 .としてカッコなども含んでしまいます。(greedyな処理とも言います)
 .*? とすることで、それを最短マッチ(最初にヒットするカギカッコまでにする)にすることができます。
(xyz) 2023/07/09(日) 14:27:33

 >下記のコードだと一部しか括弧が外れませんでした
 挙げられた例では、元のコードで機能するはずですが。
 上記の私のコメントは、そうしたカッコ付き文字列が1セルに複数ある場合の議論でした。
 カッコが入れ子になっていたりすると、また別の話になります。

 上手くいかなかった例や、そのほかのパターンがあるのなら、
 いくつか例を挙げると議論しやすいと思います。

(xyz) 2023/07/09(日) 14:56:31


フォーキー様 XYZ様
ありがとうございます。

仰る通り複数ある場合にまとめて括弧を外せたらと思い書き込みさせていただきました。

具体的には1行目のA列〜W列まであり、セルによっては文字の後に括弧がついているセルも有るので、
まとめて括弧を外したかったです。

ただRows("1:1").Selectで1行目を指定してから上記のコードで動かせば良かっただけかもしれませんね・・・
一応すべて括弧外せました。
勉強不足で申し訳ないです...
(めがね) 2023/07/09(日) 16:35:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.