首页 > 解决方案 > 将 rows.count 添加到列的第一个单元格

问题描述

我有 Table1,它在 A 列中有 159 行。假设 n = 159。我想在另一个工作表 vba 中使用这个数字来确定 G 列中的目标范围。G 列不是表的一部分。我习惯用python编码,对vba语法有一个初学者的理解。这可能吗?以下是我在此站点中研究的代码示例。

Sub FillDown()
    Dim sh As Worksheet
    Dim rn As Range
    Dim strFormulas(1) As Variant
    Set sh = ThisWorkbook.Sheets("Analysis")

    Dim k As Long

    Set rn = sh.UsedRange
    k = rn.Rows.Count + rn.Row - 1


    With ThisWorkbook.Sheets("Analysis")
        strFormulas(1) = "=IFERROR(OR(Sheet1!A1:Z1), "")"

        ActiveSheet.Range("F1").Formula = strFormulas
        ActiveSheet.Range("F1:F").FillDown
    End With

End Sub

在这一行中: ActiveSheet.Range("F1:F").FillDown

我想添加'n': ActiveSheet.Range("F1 + n").FillDown

但是这个不行。我也对您可以为 vba 语法提供的任何资源开放,特别是针对复杂公式

谢谢!

标签: excelvbacountrows

解决方案


在无法真正进行测试的情况下,我在您的代码中发现了一些事故。

  • 您正在用公式填充数组?String如果有的话,只需使用一个变量。
  • UsedRange是检索您最后使用的行的一种非常不可靠的方式。请参阅链接以获取一些说明。
  • 您还没有考虑过如何使用Worksheet变量“rn”。你Set它了,但是当你真的想在一个With语句中使用它时,你 A) 不引用你的变量并且 B) 回到 evil ActiveSheet
  • F1:F是错误的 VBA 语法。它是有效的 Google 表格语法,可能会让您失望。在这种情况下,您需要连接最后使用的行变量。
  • 要创建一个有效的公式,您需要将字符串中的引号加倍,以便 VBA 将""用作所用公式中的参数。
  • FillDown当 VBA 自动调整公式中的引用时,您不需要这样做。

看看以下是否可以解决问题:

Sub FillDown()

    Dim sh As Worksheet
    Dim rn As Range, k As Long, strFormulas As String

    Set sh = ThisWorkbook.Worksheets("Analysis")
    With sh
        k = .Cells(.Rows.Count, 1).End(xlUp).Row
        strFormulas = "=IFERROR(OR(Sheet1!A1:Z1), """")"
        .Range("F1:F" & k).Formula = strFormulas
    End With

End Sub

但是,最终结果没有意义,因为您的公式一开始看起来很不稳定。我想说的是你在这个过程中的下一步=)

祝你好运。


推荐阅读