我编写了一个宏来检查值的选择,如果它符合该值,则将其替换为其他值。好吧,当它只是一个值时,这很容易。当我尝试添加多个值时,我会遇到不同的错误。希望你们中的一个可以指出我错过了哪一点:)
Payment BegFund PmtAmt EndFund
1 1000 50 950
2 950 47.5 902.5
3 902.5 45.125 857.375
4 857.375 42.86875 814.50625
5 814.50625 40.7253125 773.7809375
6 773.7809375 38.68904688 735.0918906
答案 0 :(得分:2)
使用'选择案例'一长串清单:
For Each cell In Selection
Select Case cell.Value
Case "DZC", "0654548"
cell.Value = "Douglas C"
Case "RLP", "0623344"
cell.Value = "Ryan P"
...
Case Else
...
End Select
Next cell
答案 1 :(得分:1)
简短的回答是这样的。正确的语法是在多个条件If
语句中引用每次对象。
Dim cell As Range, sVal as String
For Each cell In Selection
sVal = Cstr(cell.Value2)
If sVal = "DZC" Or sVal = "654548" Then 'sVal = "0654548" Then
cell.Value = "Douglas C"
ElseIf sVal = "RLP" Or sVal = "623344" Then 'sVal = "0623344" Then
cell.Value = "Ryan P"
End If
Next
如果您将拥有许多查找值,则可以更好地在工作簿中创建列表,并将单元格值替换为查找列表中的关联值。你也可以使用Select Case
,但这甚至可以用~300个选项变得难看。
假设您在范围A1:B300的mySheet
中构建列表,其代码为:
Dim cell As Range
For Each cell In Selection
If Not IsErr(Application.WorksheetFunction.VLookup(cell.Value2, Sheets("mySheets").Range("A1:B300"), 2, 0)) Then
cell.Value = Application.WorksheetFunction.VLookup(cell.Value2, Sheets("mySheets").Range("A1:B300"), 2, 0)
End If
Next