VBA宏检查多个标准的范围

时间:2015-11-18 19:53:08

标签: excel-vba selection vba excel

我编写了一个宏来检查值的选择,如果它符合该值,则将其替换为其他值。好吧,当它只是一个值时,这很容易。当我尝试添加多个值时,我会遇到不同的错误。希望你们中的一个可以指出我错过了哪一点:)

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

2 个答案:

答案 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