我有一个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。
在没有真正能够测试的情况下,我在你的代码中发现了一些失误。
String
变量,如果有的话。UsedRange
是一种非常不可靠的检索你最后使用的行的方法。参见 这个 链接进行一些解释。Worksheet
变量 "rn"。你 Set
了,但当你真正想在一个项目中使用它的时候,你就会发现它是一个很好的选择。With
语句,你A)没有引用你的变量,B)回到了邪恶的 ActiveSheet
.F1:F
是糟糕的VBA语法。它是有效的Google Sheets语法,可能会让你感到困惑。在这种情况下,你需要连接最后使用的行变量。""
作为所用公式的参数。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
虽然最后的结果是没有意义的 因为你的公式一开始就看起来很奇怪 你的下一步工作我说了算=)
好运。