【问题标题】:I need help looping an index/match that is inside an if statement using Excel VBA我需要帮助循环使用 Excel VBA 的 if 语句中的索引/匹配
【发布时间】:2018-12-25 21:34:30
【问题描述】:

我正在尝试创建一个 VBA 宏来填充某个范围内的空单元格(“INV_Nums”),如果该单元格已经包含数据,则不会覆盖该单元格。为了做到这一点,我试图使用 if 语句来检查有问题的单元格是否为空白...如果不是,那么我希望循环继续到下一个单元格,但是如果它是空白的,那么我想将 index(__,(match()) 函数输入到单元格中。

我在 True 语句中不断收到“编译错误:不匹配”,但我不知道为什么我的语法会出错。任何帮助将不胜感激。

这是我的代码:

Dim i As Integer
Dim Rng As Range
Dim ARwkb As Excel.Workbook
Dim ARwks As Excel.Worksheet
Dim Samwkb As Excel.Workbook
Dim Samwks As Excel.Worksheet

Set Samwkb = Excel.Workbooks("Samples - one sheet")
Set Samwks = Samwkb.Worksheets("samples shipment")
Set ARwkb = Excel.Workbooks("AR balance.xlsx")
Set ARwks = ARwkb.Worksheets("Total Trading")
Set Rng = Samwkb.Range("INV_Nums")

For i = 6 To Rng.Rows.Count + 6

If Range("AAi") = "" Is True Then
    Range("AAi").Select
        ActiveCell.FormulaR1C1 = _
            "=INDEX('AR balance.xlsx'!AR_Invoice_Nums,MATCH(RC[-21],'AR 
balance.xlsx'!AR_PL_Nums,0))"
        End If
    Next i

【问题讨论】:

    标签: vba excel loops excel-formula


    【解决方案1】:

    问题在于您如何识别范围和管理标准。

    For i = 6 To Rng.Rows.Count + 6
        If IsEmpty(Range("AA" & i)) Then
            Range("AA" & i).FormulaR1C1 = _
                "=INDEX('AR balance.xlsx'!AR_Invoice_Nums, MATCH(RC[-21],'AR balance.xlsx'!AR_PL_Nums, 0))"
        End If
    Next i
    

    .SpecialCells 方法可以快速确定空白单元格,并且可以使用 xlR1C1 公式一次插入所有公式..

    ...
    with Samwkb.Range("INV_Nums")
        .specialcells(xlcelltypeblanks).FormulaR1C1 = _
          "=INDEX('AR balance.xlsx'!AR_Invoice_Nums, MATCH(RC[-21],'AR balance.xlsx'!AR_PL_Nums, 0))"
    end with
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多