我有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语法提供的任何资源,特别是针对复杂公式]
谢谢!
没有真正能够测试的能力,我在您的代码中遇到了一些不幸。
String
变量即可。UsedRange
是检索最后使用的行的一种非常不可靠的方法。请参阅this链接以获取一些说明。Worksheet
变量“ rn”。您将其Set
设置为有效,但是当您实际要在With
语句中使用它时,您A)并未引用变量,而B)回到了邪恶的ActiveSheet
。F1:F
是错误的VBA语法。这是有效的Google表格语法,可能会让您失望。在这种情况下,您需要连接最后使用的行变量。""
用作参数。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
尽管,最终结果没有意义,因为您的公式一开始看起来就很奇怪。我要说的下一步是=)
祝你好运。>>