[[20190803121344]] 『行末にあるテキストを自動で検索して半角→全角に』(ちゃんず) ページの最後に飛ぶ

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

 

『行末にあるテキストを自動で検索して半角→全角にしたい』(ちゃんず)

エクセル業務の効率化のため勉強中のど素人です。

エクセル内で、
(A)あいうえお
(B)かきくけこ
(C)さしすせそ(A-B)
(D)たちつてと(B+C)
(E)なにぬねの(D)

というデータがあります。
行末にある()内の英字と記号のみ半角にする作業を自動化で行いたいのですが
どのように検索すれば良いのか分かりません。
正規表現を使えば検索出来そうな気もしますが、
そもそもExcelは対応していないですよね…?

VBAを勉強中なので、VBAで出来ればありがたいのですが
もし正規表現のために外部ツールが必要となると
ややこしくなりそうで自分で自動化出来るのかも分かりません。

どなたかアドバイス等頂ければ助かります。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 Windowsバージョンなら使用できます。

 Sub test()
     Dim r As Range
     With CreateObject("VBScript.RegExp")
         .Pattern = "(.+\()(.+?)(\))$"
         For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
             If .test(r.Value) Then
                 r.Value = .Replace(r.Value, "$1" & StrConv(.Replace(r, "$2"), 8) & "$3")
             End If
         Next
     End With
 End Sub
(seiya) 2019/08/03(土) 12:34

 正規表現を使用するまでもないですね

 Sub test2()
     Dim r As Range, x As Long
     For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
         If r.Value Like "*(*)" Then
             x = InStrRev(r.Value, "(")
             r.Value = Application.Replace(r.Value, x + 1, x - 1, StrConv(Mid$(r.Value, x + 1), 8))
         End If
     Next
 End Sub
(seiya) 2019/08/03(土) 12:52

seiya様
後ほど試してみます
早速ありがとうございます!
(ちゃんず) 2019/08/03(土) 13:01

コメント返信:

[ 一覧(最新更新順) ]


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