カタカナや英数だけ半角にしたり全角にしたり
ワークシート関数のASC関数を使うと全角文字を半角に、逆にJIS関数を使うと半角を全角に…
って変換出来るんですが、英数だけ半角にしたい!とかカタカナだけ全角にしたい!ってのが
出来ないんですよね。な訳で、既出なんでしょうけど、例の如く作っちゃいました。
ソース
Option Explicit 'カタカナのみ全角⇔半角化したり、 '英数のみ全角⇔半角化したりする自作ワークシート関数 '引数 ' Target : 変換対象セル ' ConvChar : 変換対象文字 A…英字、N…数字、AN…英数、K…カタカナ ' ConvMode : 変換モード ZH…全角→半角 HZ…半角→全角 Function MYCONV(Target As Range, ConvChar As String, ConvMode As String) As String Dim re As Object Dim strPattern As String Dim Matches As Object Dim m As Object Dim buf As String Dim lngMode As Long On Error Resume Next buf = Target.Value ConvChar = StrConv(UCase(ConvChar), vbNarrow) ConvMode = StrConv(UCase(ConvMode), vbNarrow) '引数のチェック If TypeName(Target) <> "Range" Then GoTo Finally End If If Target.Count > 1 Then GoTo Finally End If If Not (ConvChar = "A" Or ConvChar = "N" Or ConvChar = "AN" Or ConvChar = "K") Then GoTo Finally End If If Not (ConvMode = "ZH" Or ConvMode = "HZ") Then GoTo Finally End If '変換対照文字に応じてパターン文字列を生成 Select Case ConvChar Case "A" If ConvMode = "ZH" Then strPattern = "[A-Za-z]+" Else strPattern = "[A-Za-z]+" End If Case "N" If ConvMode = "ZH" Then strPattern = "[0-9]+" Else strPattern = "[0-9]+" End If Case "AN" If ConvMode = "ZH" Then strPattern = "[A-Za-z0-9]+" Else strPattern = "[A-Za-z0-9]+" End If Case Else If ConvMode = "ZH" Then strPattern = "[ァ-ヴ]+" Else strPattern = "[・-゚]+" End If End Select '変換モードに応じてStrconvの引数を設定 If ConvMode = "ZH" Then lngMode = 8 'vbNarrow Else lngMode = 4 'vbWide End If '正規表現をバインド Set re = CreateObject("VBScript.RegExp") With re .Pattern = strPattern .Global = True Set Matches = .Execute(buf) For Each m In Matches buf = Replace(buf, m.Value, StrConv(m.Value, lngMode)) Next m End With MYCONV = buf Finally: Set m = Nothing Set Matches = Nothing Set re = Nothing End Function
手抜きなもんで、引数間違って入力すると空白を返すだけです(;^ω^)
数式の入力方法
=MYCONV(対象セルのアドレス,変換対象文字,変換モード)
- 変換対象文字
- A ・・・ アルファベットのみ変換、N ・・・ 数字のみ変換、AN ・・・ 英数を変換、K ・・・ カタカナのみ変換
- 変換モード
- ZH ・・・ 全角→半角、HZ ・・・ 半角→全角
絵がちっちゃいですが、関数使い慣れてる人なら↓見て頂くとわかってもらえるかと。
家帰ったら、アドインにして実験部屋にupします。
よければ
ダウンロードはここからどうぞ。