Excel - 行的动态名称范围

Excel - Dynamic Name Range for Rows

我有我想要正确范围的宽度,但在动态调整打印预览的高度时遇到问题。每周报告的行数每周调整一次,因此我想要一种创建自动更新高度的命名范围的方法。 问题是,那里混合了许多空白行,我想要一种方法可以找到 A 列中的最后一个值,即使 A1:A 之间有空白(无论最后一行是什么) .下面是一个示例和我的范围公式,如果我尝试打印,table 会被中途切断。

=OFFSET(Sheet1!$A,0,0,COUNT(Sheet1!$A:$A),12)

我试图在空白的 A 列单元格中放入白色字体,但没有成功。谢谢!

您可以使用它来查找 A 列中的最后一行。由于它是从下向上搜索的,因此最后一个单元格上方的空白行不会影响它。

LastRowColA = Worksheets(1).Columns(1).Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row

您需要 VBA 解决方案吗?您的标签显示 VBA,但您的公式是 Excel 公式。如果 VBA,通常我只获取 ListObject 的地址(即 Table)并从中提取最后一行。像这样:

With Sheet2

    .PageSetup.PrintArea = .Range("$A:" & .ListObjects("Table1").DataBodyRange.Cells(.ListObjects("Table1").DataBodyRange.Cells.Count).Address).Address

End With

您应该能够使用这个公式来获得您需要的东西(在 名称管理器 下使用这个公式,名称为 print_area 范围为有问题的工作表): =$A:INDEX($D:$D00,MATCH(9.99999999999999E+307,$A:$A00))

  • $A 就是我所说的锚细胞。这是您要打印的左上角单元格;
  • $D:$D00 将成为最右边的列,应该 "complete" 您的区域(将 D 更改为适当的列并将 1000 更改为比你的报告延伸得更远的行);和
  • MATCH 函数正在尝试在 $A:$A00 中找到最大的可能值。 这仅适用于数字数据。 请务必使用在最后一行中包含数据的列(您声明中间可能会有空白)。

注意:

如果你走这条路,我高度建议你对定义的名称进行注释,如下所示:
应该等于:=$A$1:INDEX($D$1:$D$1000,MATCH(9.99999999999999E+307,$A$1:$A$1000))
原因是如果你弄乱了边距或打印标题或其他东西,它可能会重置 print_area,你将不得不重新开始。