[Excel]半角英数字のみを全角英数字に変換するFULLWIDTHKANAカスタムワークシート関数
2022年3月21日
概要
半角英数字だけを全角に変換するカスタムワークシート関数を作成しました。
ワークシート関数だけで(VBAを使用せずに)同じことをしたい場合はコチラの記事を参照して下さい。
類似のカスタムワークシート関数は下記のとおりです。
半角文字を全角文字に変換する関数としてJIS関数が存在しますが、これは半角カタカナ(半角カナ)も全角になってしまいます。しかし、このカスタム関数は半角英数字のみを変換します。
動作例は下記の通りです。A1セルに半角英数字を含む「123ABCアイウ123ABCアイウ」を入力し、A2セルでカスタム関数のFULLLWIDTHAN()を呼び出しています。結果は半角の「123ABC」のみが全角に変換され、「アイウ」は半角の状態を維持しています。
機能
半角英数字を全角英数字に変換します。半角カタカナは影響を受けません。引数に文字列以外を指定した場合、戻り値は文字列に変換されます。なお、この関数は既定では下記の記号も全角に変換します。これらの記号を全角に変換したくない場合は、第2引数にFALSEを指定して下さい。
!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
構文
FULLWIDTHKANA(文字列 , [記号の変換] )
引数 | 説明 | 引数の指定 | 既定値 |
---|---|---|---|
文字列 | 変換する文字列を指定します。 | 必須 | (無し) |
記号の変換 | 7ビット記号を全角に変換する場合はTRUE、変換しない場合はFALSEを指定します。省略した場合はTRUEが指定されます。ここで言う7ビット記号とは、下記の33文字の半角文字を指します(先頭のスペース含む)。 !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ | 省略可能 | TRUE |
コード
下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。' [Excel]半角英数字のみを全角英数字に変換するFULLWIDTHKANAカスタムワークシート関数
' Copyright (c) 2020-2024 黒箱
' This software is released under the MIT License;.
' このソフトウェアはMITライセンスの下でリリースされています。
'* @fn Public Function FULLWIDTHAN(ByVal Text As Variant, Optional ByVal Convert7bitSymbols As Boolean = True) As Variant
'* @brief 半角英数字を全角英数字に変換します。半角カタカナは影響を受けません。引数に文字列以外を指定した場合、戻り値は文字列に変換されます。
'* @param[in] Text 変換する文字列を指定します。
'* @param[in] Convert7bitSymbols 7ビット記号( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)を全角に変換する場合はTRUE、変換しない場合はFALSEを指定します。省略した場合はTRUEが指定されます。
'* @return Variant 変換した文字列を返します。
'*
Public Function FULLWIDTHAN(ByVal Text As Variant, Optional ByVal Convert7bitSymbols As Boolean = True) As Variant
'引数が空白のみなら処理なし
If (Trim(Text) = "") Then
FULLWIDTHAN = Text
Exit Function
End If
'引数が文字列型以外なら引数を文字列に変換
If (VarType(Text) <> vbString) Then Text = CStr(Text)
'変換文字のパターン設定
Dim Pattern As String '変換対象文字のパターン(Like右辺値)
If (Convert7bitSymbols) Then
Pattern = "[ ~~!-}]"
Else
Pattern = "[0-9A-Za-z]"
End If
'変換
Dim i As Long
Dim Char As String '引数Textの文字を1文字ずつ抽出する際の格納先
Dim Buffer As String '引数中の変換対象文字を連結するバッファ
Dim Result As String '戻り値
For i = 1 To Len(Text)
Char = Mid(Text, i, 1)
'引数Text中の連続した変換対象文字をBufferに結合していく。
If (Char Like Pattern) Then
Buffer = Buffer & Char
Else '変換対象外の文字を検出したら、Bufferを変換して戻り値に結合。その後ろに変換対象外の文字を結合
'Bufferが空ならStrConv()の呼び出しを省略
If (Buffer = "") Then
Result = Result & Char
Else
Result = Result & StrConv(Buffer, vbWide) & Char
Buffer = ""
End If
End If
Next i
'引数Textの末尾が変換対象文字の場合は、ループ内の変換処理を通らないため、ここで変換
If (Buffer <> "") Then
Result = Result & StrConv(Buffer, vbWide)
End If
FULLWIDTHAN = Result
End Function
プログラムの利用について
本プログラムのライセンスは「The MIT License」を適用しています。
本プログラムは無償で利用できますが、本プログラム内の著作権表示及びライセンス表示は削除せずに表示しておいて下さい。
必須ではございませんが、本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡頂けると幸いです。
スポンサーリンク
Excelカスタム関数,Excel関数MITライセンス,VBA,カスタムワークシート関数,ソースコード
Posted by 黒箱
この記事のトラックバックURL
スポンサーリンク
カテゴリー
スポンサーリンク
-
ホーム -
上へ
ディスカッション
コメント一覧
まだ、コメントがありません