「拗音や促音を大きい文字にする関数は何でしょうか?」
といったご質問をいただくことがあります。
「ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ」
といった小さいひらがなやカタカナ(小書き文字・捨て仮名)を
「あいうえおつやゆよわアイウエオツヤユヨワ」
といった大きなひらがな・カタカナにしたいという要望です。
アメリカ生まれのExcelにはこういったワークシート関数は用意されていないようなので、VBA(Visual Basic for Applications)でユーザー定義関数を作ってみてはいかがでしょう。
Function UpperSutegana(strOrg As String) As String
Const cstLower = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ"
Const cstUpper = "あいうえおつやゆよわアイウエオツヤユヨワ"
Dim strRet As String
Dim intLoop As Integer
Dim strChar As String
Dim intChar As Integer
strRet = ""
For intLoop = 1 To Len(strOrg)
strChar = Mid(strOrg, intLoop, 1)
intChar = InStr(1, cstLower, strChar, vbBinaryCompare)
If intChar > 0 Then
strRet = strRet & Mid(cstUpper, intChar, 1)
Else
strRet = strRet & strChar
End If
Next intLoop
UpperSutegana = strRet
End Function引数・strOrgに指定された文字列を
strChar = Mid(strOrg, intLoop, 1)
1文字目から順番に取り出して
intChar = InStr(1, cstLower, strChar, vbBinaryCompare)
その取り出した1文字が定数・cstLowerの中にあるか調べて、
If intChar > 0 Then
strRet = strRet & Mid(cstUpper, intChar, 1)
もしあったら、定数・cstUpperの文字に置換し
Else
strRet = strRet & strChar
なければそのままにするという処理を、
For intLoop = 1 To Len(strOrg)
Next intLoop
ぐるぐる繰り返しています。
置換する元の文字を定数
cstLower = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ"
に指定し置換後の文字を定数
cstUpper = "あいうえおつやゆよわアイウエオツヤユヨワ"
に、元の文字と同じ順番で指定してください。
▼サンプルファイル(002223.xls 49KByte)ダウンロード
- Newer:選択対象をグループ化できません−空白セルの存在
- Older:印刷プレビューのまま訂正作業−拡大チェックボックス
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 小さい仮名(拗音・促音)を大きい仮名にする関数は?