我是这个论坛和Excel VBA的新手。我已经通过与VBA玩了一段时间了解了一点。但现在我陷入了这个小问题,我相信Excel Guru在这里可以帮助我。任何有关这方面的帮助将非常感激。以下是我的问题
要点:
我的电子表格中包含值A:F
的值
我想在列C
中使用十六进制查找和替换值,具体取决于列C
和列A
中的值。
示例:
如果列A = 1
和列C = General
然后将General
替换为0x0001
但是,如果列A = 2
和列C = General
然后将General
替换为0x0002
我的代码:
Columns("C").Replace What:=" General", Replacement:=" 0x0001", LookAt:=xlWhole, _SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ReplaceFormat:=False
问题:
我目前的代码只查看了列C
中的值,因此每个General
都会更改为0x0001
。
答案 0 :(得分:2)
如果您从:
开头
运行此宏:
Sub Changes()
Dim N As Long, i As Long
N = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To N
v1 = Cells(i, 1).Value
v3 = Cells(i, 3).Value
If v1 = 1 And v3 = "General" Then Cells(i, 3).Value = "0x0001"
If v1 = 2 And v3 = "General" Then Cells(i, 3).Value = "0x0002"
Next i
End Sub
将产生:
答案 1 :(得分:1)
除了@ garys-student的答案之外,我还想说" Case"方法使更大的决策树更容易,例如:
Sub Changes()
Dim N As Long, i As Long
N = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To N
v1 = Cells(i, 1).Value
v3 = Cells(i, 3).Value
Select Case v1
Case 1
Select Case v3
Case "General"
Cells(i, 3).Value = "0x0001"
Case Else
End Select
Case 2
Select Case v3
Case "General"
Cells(i, 3).Value = "0x0002"
Case Else
End Select
Case Else
End Select
Next i
End Sub
"选择案例v1"代替"如果v1 ="然后是案例1"将其完成为"如果v1 = 1"。
答案 2 :(得分:1)
我会使用If和Case的组合,V3测试只有一个可能的触发器,不需要这样的情况。
Sub Changes()
Dim N As Long, i As Long
N = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To N
v1 = Cells(i, 1).Value
v3 = Cells(i, 3).Value
If v3 = "General" Then
Select Case v1
Case 1
Cells(i, 3).Value = "0x0001"
Case 2
Cells(i, 3).Value = "0x0002"
Case Else
End Select
End If
Next i
End Sub