VBA 全角半角混在の英数字を統一する(Str Conv関数)
入力時のExcel環境によりアルファベットが半角であったり全角であったり統一性がないデータを集計すると誤った集計がされてしまうことがある。
特に複数のデータベースを使って作業をする場合は文字列を統一しておくこと。
Sub Macro21()
Cells(2, 1) = StrConv(Cells(1, 1), 8)
End Sub
1丁目246番地の3 |
1丁目246番地の3 |
Str Conv関数
StrConv(string、 Conversion)
string:変換したい文字列
Conversion:変換したい形式(引数:指定する値の合計値)
定数はVBA記述時、リストアップされ値に変えて入力できます
定数 | 値 | 説明 |
vbUpperCase | 1 | 文字列を大文字に変換 |
vbLowerCase | 2 | 文字列を小文字に変換 |
vbProperCase | 3 | 文字列内のすべての単語の最初の文字を大文字に変換 |
vbWide | 4 | 文字列の半角 (1 バイト) 文字を全角 (2 バイト) 文字に変換 |
vbNarrow | 8 | 文字列の全角 (2 バイト) 文字を半角 (1 バイト) 文字に変換 |
vbKatakana | 16 | 文字列に含まれるひらがなの文字をカタカナに変換 |
vbHiragana | 32 | 文字列のカタカナ文字をひらがなに変換 |
vbUnicode | 64 | システムの既定のコードページを使用して、文字列をUnicodeに変換 |
vbFromUnicode | 128 | 文字列を Unicode からシステムの既定のコードページに変換 |
VBA Format関数
データベースに日付を入力したいことは頻繁にあるがその時、活躍するのがFormat関数です。例えばファイル名に今日の日付を使いたい場合にも簡単にできます。
Sub Macro1()
Cells(1, 1) = Format(Now, yyyymmdd)
Cells(2, 1) = Format(Now, "yyyymmdd")
Cells(3, 1) = Format(Now, yyyymd)
Cells(4, 1) = Format(Now, "yyyymd")
End Sub
2020/4/20 |
20200420 |
2020/4/20 |
2020420 |
新しく保存するファイル名が既存のファイル名と同じになってしまうと上書きするか聞かれますが「いいえ」を押すとエラーになってしまいます。
例えばVBAの検証時など小変更を加えるたびに保存したいファイル名のあとに追加しておけば時系列的に管理もでき便利です。
Sub Macro2()
Cells(11, 1) = Format(Now, "hhnnss")
Cells(12, 1) = Format(Now, "hns")
End Sub
9時8分3秒の場合:
90803 |
983 |
もちろん、作成するデータベース上でもいろんな活用方法があります。
Sub Macro3()
Cells(21, 1) = Format(Now, "Long Date")
Cells(22, 1) = Format(Now, "aaaa")
Cells(23, 1) = Format(Now, "aaa")
Cells(24, 1) = Format(Now, "ggg" & "e" & "年" & "m" & "月" & "d" & "日")
Cells(25, 1) = Format(Now, "ggg" & "e" & "年" & "oooo" & "d" & "日")
End Sub
2020年4月20日 |
月曜日 |
月 |
令和2年4月20日 |
令和2年4月20日 |