Trim・大文字小文字の統一
Excelで「コード」「ID」「名前」などを突合するときに、前後の空白や大文字小文字の違いで一致しないことがよくあります。これを防ぐのが Trim(空白除去) と 大文字小文字の統一(UCase/LCase) です。初心者でもすぐ使えるテンプレをまとめました。
基本の関数
- Trim
文字列の前後の空白を削除します。Trim(" ABC ") → "ABC" - UCase
文字列をすべて大文字にします。UCase("abc") → "ABC" - LCase
文字列をすべて小文字にします。LCase("ABC") → "abc"
単一セルの処理例
Sub NormalizeCell()
Dim ws As Worksheet: Set ws = Worksheets("Sheet1")
Dim v As String
v = ws.Range("A1").Value
'前後空白を削除して大文字化
v = UCase(Trim(v))
ws.Range("B1").Value = v
End Sub
VB- ポイント
- A1セルの値を「空白除去+大文字化」してB1に出力。
- 小文字統一したい場合は
LCase(Trim(v))に変更。
列全体を一括正規化(監査用)
Sub NormalizeColumn()
Dim ws As Worksheet: Set ws = Worksheets("Sheet1")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Cells(1, "B").Value = "正規化キー"
Dim r As Long
For r = 2 To lastRow
ws.Cells(r, "B").Value = UCase(Trim(ws.Cells(r, "A").Value))
Next
End Sub
VB- ポイント
- A列のコードを正規化してB列に出力。
- 突合前に「正規化キー」を作っておくと一致しない原因が見える。
辞書やJOINでの利用(突合テンプレ)
Sub JoinWithNormalizedKeys()
'明細: Sheet("明細") A=コード, B=数量
'マスタ: Sheet("マスタ") A=コード, B=名称
Dim vD As Variant: vD = Worksheets("明細").Range("A1").CurrentRegion.Value
Dim vM As Variant: vM = Worksheets("マスタ").Range("A1").CurrentRegion.Value
'マスタ辞書(正規化キー→名称)
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim i As Long, k As String
For i = 2 To UBound(vM, 1)
k = UCase(Trim(CStr(vM(i, 1))))
If Len(k) > 0 Then dict(k) = CStr(vM(i, 2))
Next
'JOIN出力
Dim out() As Variant: ReDim out(1 To UBound(vD, 1), 1 To 3)
out(1, 1) = "コード": out(1, 2) = "名称": out(1, 3) = "数量"
Dim r As Long
For r = 2 To UBound(vD, 1)
k = UCase(Trim(CStr(vD(r, 1))))
out(r, 1) = vD(r, 1)
out(r, 3) = vD(r, 2)
If dict.Exists(k) Then
out(r, 2) = dict(k)
Else
out(r, 2) = "#N/A"
End If
Next
Dim wsOut As Worksheet: Set wsOut = Worksheets.Add
wsOut.Name = "突合結果"
wsOut.Range("A1").Resize(UBound(out, 1), 3).Value = out
wsOut.Columns.AutoFit
End Sub
VB- ポイント
- 明細とマスタのキーを Trim+UCase で統一。
- 未一致は「#N/A」で見える化。
よくある落とし穴と対策
- 全角スペースが残る
→Trimは半角スペースのみ削除。全角スペースはReplace(s, " ", "")で除去。 - 大小混在で一致しない
→UCaseまたはLCaseで必ず統一。 - 数値と文字列の混在
→CStrで文字列化してから正規化。
例題で練習
'例1:セルの値をTrim+大文字化
Sub Example_NormalizeCell()
NormalizeCell
End Sub
'例2:列全体を正規化して監査列を作成
Sub Example_NormalizeColumn()
NormalizeColumn
End Sub
'例3:正規化キーで辞書JOIN
Sub Example_JoinNormalized()
JoinWithNormalizedKeys
End Sub
VB