excel - 将 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 语法提供的任何资源开放,特别是针对复杂公式
谢谢!
解决方案
在无法真正进行测试的情况下,我在您的代码中发现了一些事故。
- 您正在用公式填充数组?
String
如果有的话,只需使用一个变量。 UsedRange
是检索您最后使用的行的一种非常不可靠的方式。请参阅此链接以获取一些说明。- 您还没有考虑过如何使用
Worksheet
变量“rn”。你Set
它了,但是当你真的想在一个With
语句中使用它时,你 A) 不引用你的变量并且 B) 回到 evilActiveSheet
。 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
但是,最终结果没有意义,因为您的公式一开始看起来很不稳定。我想说的是你在这个过程中的下一步=)
祝你好运。
推荐阅读
- dart - 如何更改菜单项颜色?
- django - django constance 导致事务错误
- c# - 对同一模型使用 ASP-FOR 两次
- regex - PowerShell 解析
- sublimetext3 - Sublime text 不会打开错误来解析设置:包中出现意外的尾随字符
- python - 如何配置数据库设置 Django-MSSQL (windows)?
- javascript - 如何将头部中的脚本标签添加到 cpanel 中的 wordpress 主题?
- xml - 我可以使用其他格式(例如 XML)的 Watson Assistant 开发聊天机器人吗?
- shell - 在 Jenkins 中读取参数化参数的问题
- angular2-template - 我可以在打字稿或控制台中显示完整的 html 页面(标签、元素)吗?