EXCEL中根据内容自动设置打印区域【绝对高手进】

首先看清楚题目,不是简单的页面预览,是智能化的自动调整,所以不是高手肯定解决不了的。

首先,如图所示,是一个自动计算套链的EXCEL表格。

在表格的A11~K791为数据自动载入区域,根据J2与K2的条件设置不同,其行数显示也不同(即查找到的最终数据量),现要求解决的问题是,打印区域随着自动跳出来的内容调整到内容显示的最后一行(智能化自动调整,非页面预览)。
先说下我的思路及问题症结:
1、VB我不会,如果提供最好是直接COPY可用的,此文件地址\\user-mb\server (E)\server\[rytjb.xls]Staves。
2、能否设定一个单元格(假设AA3),然后利用某个公式直接根据内容计算得到需要打印的区域(如公式结果=A11:K105),然后在打印区域设置中指向此单元格,可是我不知道用什么公式,再则不确定打印区域是否支持可变性的数值,也不清楚当单元格的值是否可以是区域范围。
现使用的方法,整体全部打印设置,弊病:一不小心全部打印的话,会多打印很多空白表格,若不是全部打印的话下面页码的总数也不对,而且需要翻多好页。

谁能解决我问题的,用VB的,COPY可用便全额给分,用公式可用的追加50分,两个都提供的,追加100分。
更明确的要求,打开表格后,除了J2、K2可以输入数值外,剩下可以操作的就是点一下打印预览鼠标,所有工序必须在点打印预览前自动后台完成计算。谢谢!刚问题自动跳掉了,重发一遍!

    打开编辑好的Excel文档,选中想要打印的区域,如图所示(阴影图层部分为所要打印的区域)。

    点击页面布局选项卡,选择打印区域选项, 点击设置打印区域子选项,这时候就成功设置了打印区域。

    在设置好打印区域后,需要对选中的打印区域的输出效果稍作调整,以符合输出需求。首先按下CTRL+P, 点击预览选项(红色笔标注)。

    在弹出的先窗口中点击页面设置, 可以看到(如下图)1-页面,2-页边距,3-页眉/页脚,4-工作表四个选项卡,它们分别依次负责调整页面布局,调整页边距,添加页眉和页脚,以及工作表打印输出的一些高级选项(工作表选项新手很少使用),再熟悉了整个简单的页面设置后读者可以自行尝试对每一个选项进行亲自操作。

    上述调整完成后,点击确定,输出到打印机即可 。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-30
按ALT+F11,进入VBE,选择Staves表,复制下面的代码。。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$2" Or Target.Address = "$K$2" Then
Dim i
With ThisWorkbook.Sheets("Staves")
For i = 11 To 790
If .Cells(i, 1).Value = "" Then
Exit For
End If
Next
.PageSetup.PrintArea = "$A$1:$K$" & i - 1
End With
End If
End Sub

这样你该J2,K2,点打印预览就可以打印了本回答被提问者和网友采纳
第2个回答  2012-08-03
你说了这么多,我是看明白了,就是把两个日期中间的打印出来

第一:先做日期筛选,我喜欢用VBA完成
第二:设置打印区,因为你有格线,所在会打印空页,这个也只能用VBA完成的

最重要的是我现在没时间给你做这个,希望有时间的人帮他解决下。

你可以分开问。先解决第一,再解决第二。这样解决的更快点。追问

你答非所问。我不需要第一第二,我所有的就在打开的瞬间完成,没有一二,谢谢!

追答

那我就更不明白了,你日期怎么选择的,打开文就完成,还要日期选择干什么。我晕了。

我不是高手,一般的VBA可以写的。现在是不时间来做这东西。

我的理解是你选择日期段后,,做个打印按钮,点下就按你的要求打印出来就行了。

追问

我们所考量的角度不同,你所说的我都会,只不过我的目的不在于我会用,而是别人会用,顺着这个思路去走。你要知道现在的领导都不是很会用EXCEL,而且也嫌麻烦,通常不够人性化的东西很难被他们接受所采纳,所以我要做的就是简单化,能让他们直接点开就达到他们的要求。之所以要有日期选择是这个文件的精华所在(下面白的不是我因为要贴图而把数据删除了,而是里面全部是公式,根据那两个日期自动跳转筛选,比你的筛选快?)。

第3个回答  2018-04-16

    选择A1→页面设置→打印区域→设置打印区域

    打开公式→名称管理器→选择Print_Area,输入公式:“=OFFSET(sheet1!$A$1,,,COUNTA(sheet1!$A:$A)+8,COUNTA(sheet1!$9:$9))”

    公式中COUNTA(sheet1!$A:$A)计算行数+8是你前面空的8行,COUNTA(sheet1!$9:$9)计算列数

    看看打印预览

第4个回答  2012-08-03
题目太长,不想看