在列的第一个单元格中添加行数。

问题描述 投票:0回答:1

我有一个Table1,它有159行在列A.让我们说的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语法。

谢谢!我有一个表1,它的A列有159行,比如说n=159。

excel vba count rows
1个回答
1
投票

在没有真正能够测试的情况下,我在你的代码中发现了一些失误。

  • 你是用公式填充一个数组?只要使用一个 String 变量,如果有的话。
  • UsedRange 是一种非常不可靠的检索你最后使用的行的方法。参见 这个 链接进行一些解释。
  • 你还没有想清楚如何使用你的 Worksheet 变量 "rn"。你 Set 了,但当你真正想在一个项目中使用它的时候,你就会发现它是一个很好的选择。With 语句,你A)没有引用你的变量,B)回到了邪恶的 ActiveSheet.
  • F1:F 是糟糕的VBA语法。它是有效的Google Sheets语法,可能会让你感到困惑。在这种情况下,你需要连接最后使用的行变量。
  • 为了创建一个有效的公式,你需要在你的字符串中加双引号,这样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

虽然最后的结果是没有意义的 因为你的公式一开始就看起来很奇怪 你的下一步工作我说了算=)

好运。

© www.soinside.com 2019 - 2024. All rights reserved.