列 A に検索パターンのリストを含むシート 1 があり、列 B に対応するカテゴリ名のリストがあります。銀行取引のさまざまな説明のリストを含むシート 2 があります。
たとえば、シート 1 には食料品、燃料、娯楽、貯蓄があり、シート 2 には「シェル サービス ステーション、abc ロード」、「コールズ スーパーマーケット」などがあります。
トランザクション列で単語を検索し、見つかった行をカテゴリに置き換えたい..
例えば。Sheet2 に「Shell」という単語が見つかった場合、その行を「Fuel」という単語に置き換えたい
これまでのところ、私はこれを機能させていますが、それが最も効率的または効果的な方法であるとは思いません. 以下は私のコードです。
Sub UpdateCats()
Dim x As Integer
Dim FindString As String
Dim ReplaceString As String
Dim NumRows As Integer
'Replace and update Categories
With Sheets("Categories")
.Activate
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
FindString = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ReplaceString = ActiveCell.Value
ActiveCell.Offset(1, -1).Select
With Sheets("Data")
.Activate
'With Columns(2)
Cells.Replace What:=FindString, Replacement:=ReplaceString, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
'End With
End With
Sheets("Categories").Activate
Next
End With
End Sub
これまでコードが気に入らなかった理由は、ループを実行するときにシート間を継続的に切り替える (アクティブ化する) 必要があるためです。これをより良くする方法はありますか?