我有一张工作表,它是一个包含 10,000 行公式的模板,这些公式只是从另一张工作表中提取可用数据。我试图让它只打印显示的数据,但默认情况下它会提取所有 10,000 行。因此,我在名称管理器中创建了一个名为 DynPrint 的条目,其中包含以下公式:
=OFFSET('Template Log'!$A$1,0,0,COUNT(IF('Template Log'!$B$9:$B$10000<>0,'Template Log'!$B$9:$B$10000)),22)
然后在Print_Area
条目上我将其设置为=DynPrint
。最初它的工作方式与我预期的一样,并且仅显示要打印的适当数据。但是当我打开文件并更新数据集时,打印区域保持不变。检查名称管理器发现 Print_Area 的公式不再显示,=DynPrint
而是显示一个硬范围。
我做错了什么以及如何让它像我需要的那样一直动态打印?
答案1
答案2
在我看来,你所做的事情和Lee
所做的事情之间存在着一个非常细微但非常关键的差异。
您的帖子听起来像是您在“页面设置”对话框中直接指定命名范围本身。Lee
根本不是这样做的。所以它所说的位置Print Area:
就是我认为您放置命名范围的位置。
这种方法暂时有效,因为关闭对话框会导致 Excel 将该命名范围解析为当时的值。如果您打印,然后立即重新打开“页面设置”对话框,您将看到指定的正式范围,而不是命名范围。所以是 A1:K100,而不是“DynPrint”。无需保存并关闭电子表格,然后重新打开它即可实现这一点,它发生在您关闭对话框甚至打印之前的时刻。
(事实上,做一些更类似的事情Lee
,执行保存、关闭、重新打开的顺序不会在我的计算机上丢失任何东西。而且从逻辑上讲,也不应该如此,所以世界上一切都正确。)
那么,如何保持可行的动态打印范围?您可以更改为表格,因为 Excel 将保留表格引用,至少当它是整个表格时。我还没有尝试过部分表格(前段时间在自己的工作中做过,今天没有)。如果您像我一样不想这样做(就我而言,因为我希望SPILL
公式填充要打印的区域,而这些公式在表格中不起作用),那么您必须寻找其他方法。
您看到的问题是,按照您现在的做法,对真实地址的解析是永久性的。更改为此版本或Lee
的版本,就可以解决这个问题。
这样Lee
做是正确的,尽管它有一个不必要的额外步骤。如果您有很多命名范围、很多页面和很多打印范围,但从未单击将命名范围对话框限制为当前页面,那么如果您直接执行此操作,则很容易更改错误页面的打印范围,因此也许Lee
额外的步骤很有用,因为它可以为实际的动态公式在每个页面上赋予不同的名称,而不必太担心这一点。
以任意方式创建打印范围,以便下一步可以使用。然后,您可以将动态公式直接放在打印范围自己的Refers to:
框中。无需将其放在自己的命名范围内,然后将该命名范围放在打印范围的框中。但无论哪种方式都可以。
这样做会给我一个真正动态的(在 B 列中添加一个数字,然后看到屏幕上立即展开的打印范围)打印范围。每次打印时它解析为真实地址并不重要,因为每次我下次使用它时,公式都会在再次解析之前更新。所以这正是你想要的。
现在,一个单独的问题,并且根据规则要求,您有一个单独的问题,即确保您有正确的公式。我将在那里回答这一部分。