数値をテキスト値に置き換えるツールを作成するように要求されました。検索値はワークシート( "この質問の目的のために別のワークシート(この質問のために "replaceSheet")の数値を置き換えることを意図しています。したがって、0 = dog、1 = cat、2 = cow、3 =羊そして、私の元の列は次のようになります。ヘッダー名で列を検索し、列の値を配列項目に置き換えます。
NewCol
Dog
Cat
Cow
Sheep
Cat
Dog
:
NewCol
0
1
2
3
1
0
その後、検索範囲で実行した後に、のようになります。
ルックアップ値は常に対応する番号の順番になっているため、これを配列に渡すのは簡単です。しかし、1つの問題は、列ヘッダーが同じままであるが、別のワークシート内でその位置が変わる可能性があるためです。そのため、コード名をヘッダーとして最初に検索するようにしました( "NewCol"この質問の目的)、列参照を取得し、ループを適用してこれに値を変更します。しかし、私のコードでループに入るたびに、私はアプリケーション定義またはオブジェクト定義エラーを取得し、私はそれが間違っているのか分かりません。私は、 "lRow ="行にブレークポイントを置き、エラーが発生した後です。
Sub ChangeCol()
Dim strArray As Variant
Dim TotalRows As Long
Dim replaceSheet As Worksheet
Dim lookupSheet As Worksheet
Dim I As Long
Dim lRow As Long
Dim aCell As Long
'Set worksheets
Set lookupSheet = ThisWorkbook.Sheets(1)
Set replaceSheet = ThisWorkbook.Sheets(2)
'Load lookupArray
TotalRows = lookupSheet.Rows(Rows.Count).End(xlUp).Row
strArray = lookupSheet.Range(Cells(2, 2), Cells(TotalRows, 2)).Value
MsgBox "Loaded " & UBound(strArray) & " items!"
'Find column to replace values
aCell = replaceSheet.Range("A1:DD1").Find(What:="NewCol", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
lRow = replaceSheet.Cells(Rows.Count, aCell).End(x1Up).Row
'Loop through lookup array and replace values
For I = 1 To UBound(strArray)
replaceSheet.Columns(aCell).replace What:=(I - 1), Replacement:=strArray(I, 1), LookAt:=xlWhole, MatchCase:=True
Next I
End Sub
私はそれと間違って何が起こっているかわからないんだか、この周りのより良い方法がある場合、私は間違って行くよどこに任意のヘルプははるかに高く評価されます。
あなたはそこにタイプミスを持っていますl' – R3uK
ああ、神様、私はそんなに馬鹿だと感じています、それを指摘してくれてありがとう、私は今、あなたは答えにあなたのコメントを得ることができますので、私はそれを受け入れることができます。私はExcelがこれらのことをより良く指摘したいと願っています! – Clusks