【问题标题】:Excel VBA Range until last available cellExcel VBA 范围直到最后一个可用单元格
【发布时间】:2020-04-10 02:49:03
【问题描述】:

我在使用“Range”实现 VBA 代码时遇到问题:

我正在使用 2 张纸。第一个是“导入”,另一个是“数据”,我使用“导入”中的数据,使用不同的公式来编辑/过滤我的数据。 “导入”表中的数据每周更改一次,因此行数(5000-10000 行)。

我将 Range 设置为 10000,以始终覆盖我的数据,但是当行数低于 10000 时,它将N/A 放在单元格上,每次都必须删除。

这是我在“数据”表上使用的(数据中的每一列都从导入中导入其他列):

Range("A2:A10000").Formula = "='Import'!RC"
Range("B2:B10000").Formula = "=VLOOKUP(RC[-1],'Import'!R1C[-1]:R10000C[43],45,FALSE)"`

有什么方法可以让 Range 查看“Import”的每列有多少行,这样我就可以避免所有的 N/A?

【问题讨论】:

  • 简单,先从“Import”中计算行数,然后从2循环到行数,然后为每个单元格放置公式。

标签: excel vba excel-formula


【解决方案1】:

试试,

dim lr as long

with worksheets("Import")
    lr = .cells(.rows.count, "A").end(xlup).row
end with

with worksheets("Data")
    .Range(.cells(2, "A"), .cells(lr, "A")).Formular1c1 = "='Import'!RC"
    .Range(.cells(2, "B"), .cells(lr, "B")).Formular1c1 = _
         "=VLOOKUP(RC[-1], 'Import'!C1:C45, 45, FALSE)"
end with

真的有必要把A列的值带过来吗?似乎 B 列中的公式也很容易,

with worksheets("Data")
    .Range(.cells(2, "B"), .cells(lr, "B")).Formular1c1 = "=RC45"
end with

【讨论】:

    【解决方案2】:

    我认为最好看最后一行,然后只应用到相关行。

    但是您可以将 VLOOKUP 包装在 IFERROR() 函数中。因此,当不存在任何值时,它会将 #N/A 显示为空白单元格...

    Range("A2:A10000").Formula = "='Import'!RC"
    
    Range("B2:B10000").Formula = "=IFERROR(VLOOKUP(RC[-1],'Import'!R1C[-1]:R10000C[43],45,FALSE),"""")"
    

    【讨论】:

      【解决方案3】:

      我强烈建议使用 think 的方法来避免一些意外错误,也最容易理解代码并为您的下一个挑战修改。

      Dim tw As Workbook: Set tw = ThisWorkbook
      Dim shImp As Worksheet: Set shImp = tw.Worksheets("Import")
      Dim shData As Worksheet: Set shData = tw.Worksheets("Data")
      Dim nrRows As Long
      
      nrRows = shImp.Cells(shImp.Rows.Count, "A").End(xlUp).Row
      shData.Range("A2:A" & nrRows).FormulaR1C1 = "=Import!RC"
      shData.Range("B2:B" & nrRows).FormulaR1C1 = "=VLOOKUP(RC[-1], 'Import'!C1:C45, 45, FALSE)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        • 2017-05-12
        • 2015-11-26
        • 1970-01-01
        • 2019-06-08
        • 1970-01-01
        • 2019-08-05
        相关资源
        最近更新 更多