EXCEL数据表格的自动加入空行和加入表头!

我有一很长的数据,分为3列,大概总共有20000多行,但是为了打印,我设置了分页,每一页上面都要有表头,而且每一页上面加入不够,要求自动加入空行直到补满这一页!
可能大家没有注意到,我表头上面的档案号可能不一样啊~而且还有一个问题就是,假如这是新的一档,就要重新开头,也就是要另起一页呀,所以上面必须补入空行!这个空行的行数不确定啊,但是只要补足一页就够了,不知道有没有合适的计算方法啊!如有合适办法,可以加分!!!

也许许多人没看到,这是个动态表头。而且有这种需求的人都是只用于打印,因为通常管理档案的表格,没人会把档案号放在个位置,即占地方又不方便查找。所以,这个表只能用于打印。

楼主, 这个前段时间帮一个朋友解决类似问题,  是个工资台帐。它的表头会在打印每一页时会根据当前页的表内容实现动态变化,如果您需要类似操作,请把数据样品(别太多,几行则可)发我邮箱cells8@163.com吧 

=========================================================================

就楼主的具体问题,下面实现动态表头并执地打印的是VBA代码: 

Sub PrintTab()

Dim i As Long

Dim cs As Single

Dim p As String

Dim arr

cs = 0

p = Left(Sheet2.Cells(2, 1), 18)

Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

For i = 2 To Sheet2.Range("A65536").End(xlUp).Row

    arr = Sheet2.Cells(i, 2).Resize(1, 3)

    Sheet1.Cells(cs + 4, 2).Resize(1, 3) = arr

    cs = cs + 1

    If Left(Sheet2.Cells(i + 1, 1), 18) <> p And i + 1 <= c Then

       Sheet1.Cells(2, 3) = p

       Sheet1.PrintOut From:=1, To:=1

       cs = 0

       p = Left(Sheet2.Cells(i + 1, 1), 18)

      键橘 Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

    End If

 空和   If cs > 43 Then

       Sheet1.Cells(2, 3) = p

       Sheet1.PrintOut From:=1, To:=1

       cs = 0

       Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

    End If

Next

End Sub

-------------------------------------------------------------------------------

实现原理: 一个数据表,一个模板表.  模板表上只有一页。 把数据从数据表上依次装载到模板表. 装满一页或档案号更换前, 修改表头并对模板表执行打印。 然后清空模板表继续装数据表数据,直接所有数据装载到模板表并执行打印动作。 

=====================================================================

给 提问者 的意见: 

因为您有几万条的数据,手工去完成这些打印操作会非常麻烦,所以您的问题我是特别认识对待的。 5月4日晚上您把文件样品交给我,我连夜就帮你写的程序代码,同时还进行了打印测试,以确保代码执行的准确性。 然后,自从把文件发给你之后,您就再沓无音信。刚看过你的个人中心,6小时前,你还在线。 

我不得不在此提点儿意见,这也算是代表所有答友们给提问者的一点意见:

1. 如果我们的回答,没有解决您的问题,希望能积极联系,以便快速解斗亮盯决问题。

2. 如果我们的回答有幸解决了您的问题,也希望尽快给最佳答案。一这是对我们付出劳动最好的肯定,二是让有同类问题的朋友们尽快看到正确答案。

3. 我觉着提问者来知道提出关心的问题,有责任就答友们的回答及时沟通,正确答案及时认定。而且,我认为“我的问题解决了”就放任提问自生自灭,是对积极解答您问题人的一种极不尊重。

(贴主,因为这个提问还没结束,上边的话不代表是说您,我说了是代表所有答友们给提问者的一点意见) 

======================================================================

5月9日晚收到贴主的答复,再复本贴:

需要把数据生成具体每一张表格,放在一个工作表。并且表格与表格间有分页

追加程序代码CreateTAB如下:

Sub CreateTab()

Dim i, c, k As Long

Dim cs As Single

Dim p As String

Dim arr

c = Sheet2.Range("A65536").End(xlUp).Row

cs = 0

k = 1

p = Left(Sheet2.Cells(2, 1), 18)

Application.ScreenUpdating = False

Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

Sheet4.UsedRange.EntireRow.Delete

For i = 2 To c

    arr = Sheet2.Cells(i, 2).Resize(1, 3)

    Sheet1.Cells(cs + 4, 2).Resize(1, 3) = arr

    cs = cs + 1

    

    If Left(Sheet2.Cells(i + 1, 1), 18) <> p And i + 1 <= c Then

       Sheet1.Cells(2, 3) = "档案号:" & p

       'Sheet1.PrintOut From:=1, To:=1

       Sheet1.[B1].Resize(47, 3).Copy Sheet4.Cells(k, 1)

       k = k + 48

       Sheet4.Cells(k, 1).PageBreak = xlPageBreakManual

       cs = 0

       p = Left(Sheet2.Cells(i + 1, 1), 18)

       Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

    End If

    

    If cs > 43 Then

       Sheet1.Cells(2, 3) = "档案号:" & p

       'Sheet1.PrintOut From:=1, To:=1

       Sheet1.[B1].Resize(47, 3).Copy Sheet4.Cells(k, 1)

       k = k + 48

       Sheet4.Cells(k, 1).PageBreak = xlPageBreakManual

       cs = 0

       Sheet1.Cells(4, 2).Resize(44, 3).ClearContents

    End If

Next

Application.ScreenUpdating = ture

End Sub

经本人测试,上述在03版上执行没有问题.


哎……楼上的告销亮诸位大哥哥大姐姐啊~~~~~~~~~~~~
没有看懂提问者的意思就不要乱说话嘛………………
楼猪:这个问题偶来回答!!
我想,你的意思是在固定的列输入小数点是吧???
方法很简单:
选中你要输入小数的的那个列的列号,然后,依次点击:
数据==》有效性
在弹出的对话框里头,最后一个标签:是“输入法模式”。
将里面的输入法模式改成“关闭(英文模式)”
好了,你现在试试?
在其它的列输入法自动被打开,而当你用TAB、方向键等移动到袜宽这个列的时候,
输入法会被自动关闭,这个时候输斗戚入小数,嘿嘿……哇卡!!!!

如果为了打印,可以设置第返散一页上面自动加表头,方法为,文件,页面设置选项卡中,工作表,光标定位在项端标题行右边框中,埋祥到工作表中点选要放在第一行行号,弯世搏确定,那打印时就会自动插入表头了。
你先在表头前插入一行,然后在页面设置的对话框里,点信谨击工作表,点击顶端标题,出来对话框之后,在工作表上选取明戚表头前的两列,就可以了滑槐基。
如楼上所说的方法在打印时指定标题液族行即可樱埋租。对脊兆于你所说的要加入空白行以补满一页,其实很简单,只有最后一页会出现下面有空白的现象,前面的n页的下面绝对不可能出现空白区域,因此,你只需先打印预览,然后切换到最后一页,根据页面虚线所框住的区域,将最后一页最下面空白区域的单元格的框线设置为实线即可。