ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1216|回复: 3

[已解决] 统计有内容单元格(不含公式格)+分户批量打印

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-4 00:28 | 显示全部楼层 |阅读模式
本帖最后由 鎈钚哆姺泩 于 2012-11-4 10:46 编辑

B1.jpg
有这样一张表“全部人员明细表”,如(图1)现在要按“医疗证号或户主姓名”依次打印。
打印格式如下图。
b2.jpg (图2) b3.jpg (图3)
需要麻烦大虾的是:1、右下角总人数和实际不符(看黄线圈住的部分)因为C2:C8都包含公式,简单尝试用了COUNTA是不行的。
2、因为最后要按照医疗编号做成医疗卡,我现在的方法是。在(图3)红圈位置逐一选择医疗编号,然后按打印键。但是,医疗编号一直到了600+,这么点效率实在太低。想请大虾们,教个一劳永逸的方法。让它自己从...001打印到...600.
后附文件 人数总计、按编号批量打印.zip (6.35 KB, 下载次数: 142)

TA的精华主题

TA的得分主题

发表于 2012-11-4 01:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主  你的第一个问题  是公式有误

=MAX(IF(C2:C8="",1,ROW(C2:C8)))

row(C2:C8)返回的值是{2;3;4;5;6;7;8}

而如果你用这个公式来计数的话  需要是{1;2;3;4;5;6;7}

改成=MAX(IF(C2:C8="",1,ROW(C1:C7)))
或者=MAX(IF(C2:C8="",1,ROW(1:7)))  就可以解决


第二个问题 以我的理解  用vba操作会比较容易  楼主可以考虑去vba问答区发帖求助

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-11-4 09:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-4 10:46 | 显示全部楼层
我是水和 发表于 2012-11-4 01:09
楼主  你的第一个问题  是公式有误

=MAX(IF(C2:C8="",1,ROW(C2:C8)))

是的。VBA区的大虾,已经帮我解决了。
Sub Macro1()

    Sheets("单户打印页表").Select
    For n = 2 To Sheets("户编号去重复数据精简表").[a65536].End(xlUp).Row
        [a2] = Sheets("户编号去重复数据精简表").Cells(n, 1)
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-18 22:28 , Processed in 0.044091 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表