将rows.count添加到列的第一个单元格中

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

我有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语法提供的任何资源,特别是针对复杂公式]

谢谢!

excel vba count rows
1个回答
1
投票

没有真正能够测试的能力,我在您的代码中遇到了一些不幸。

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

查看以下内容是否有效:

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.