vbaで文字列内に特定の値が含まれていたら変換する
vbaで漢字をカタカナにするマクロを組みました。
一覧のシートをループ->変換テーブルをループ->その文字列が含まれていたら変換するという形です。
Sub 変換()
Dim i As Long
Dim num As Long
Dim num_2 As Long
Dim moji As String
Dim j As Long
'商品一覧のシートを回す
num = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To num
'半角大文字にする
moji = StrConv(Sheets(1).Range("B" & i), vbUpperCase)
moji = StrConv(moji, vbNarrow)
'変換テーブルの中身をループする
For j = 2 To Sheets("変換テーブル").Cells(Rows.Count, 1).End(xlUp).Row
If InStr(moji, Sheets("変換テーブル").Cells(j, 1)) > 0 Then
moji = Replace(moji, Sheets("変換テーブル").Cells(j, 1), Sheets("変換テーブル").Cells(j, 2))
End If
Next
If InStr(moji, "CLAZZIO ") > 0 Then
Sheets(1).Cells(i, 3) = moji
ElseIf InStr(moji, "CLAZZIO") > 0 Then
Sheets(1).Cells(i, 3) = Replace(moji, "CLAZZIO", "CLAZZIO ")
Else
Sheets(1).Cells(i, 3) = "CLAZZIO " & moji
End If
Next
MsgBox "変換完了しました"
End Sub
しかし、このマクロだと50000件を超えるデータを処理すると時間がかかってしまいます。
何か時間短縮を出来るいい方法などございますか?
ちなみに1枚目のシートは一覧(B列に変換前の商品名が入っている)
変換テーブルという名前のシートのA列に変換前の漢字(例:列目)が入っており、B列に変換後のカタカナ(例:レツメ)が灰っています。
また、変換テーブルの値と一覧の値は増減します。