文章中只阐述了我对数据记录方式的心得,所提到的实例只进行了最终结果的演示以验证我的心得,没有涉及实例具体实现方法。今天,我就以这个实例的实现方法做一个分享,对excel的操作涉及到超级列表、透视表、相机(没错,是相机)及一点简单的函数。
我在制作这套表格的过程中,和财务反复沟通,修改,用时十天左右才制作完成。所以,你如果对这套表格感兴趣的话,这篇文章全文七千字,我建议用三天时间来消化这篇文章。涉及到的每一个操作我都会详细分享,我始终认为,有目的地学习软件比漫无目的地学习往往是事半功倍。单独给你一百个操作技巧但没机会应用,效果始终不尽如人意。
相信我,只要你消化了有关这套表格的操作,你会觉得什么透视表、超级列表等是如此的简单。

深呼吸,我们开始吧!
分享使我进步
实例说明主要流程:这是我实际操作的一套维修记录表,覆盖了每台设备从接件到返回的整个流程。售后维修主要流程
制表思路:这段时间“区块链”非常热门,其典型特征就是“去中心化”。这套维修记录表反其道而行之,制表体现一个中心思想:绝对中心化。所有的报表及单据从一个工作表中(我们暂时叫它“流水”)提取,而提取的数据是单向传递的,最终的单据及报表不允许修改数据,这是透视表的一个特征,也是保证我们所有统计数据结果正确的一个重要手段。说白了,就是“流水”数据一更新,透视表数据同步更新。
一个中心,N个基本点
“流水”向透视表输出数据,只要“流水”不被损坏,我们随时可以利用透视表生成更多的结果。所以,“流水”是中心。虽然有没有透视表对“流水”没有任何影响,但透视表又是”流水“存在的最大意义。
了解一个名词:字段
这张图是透视表生成的\"维修设备报价单\",图中红框中的文字我们称之为“字段”。
蓝框中的文字我们可以利用已有的“客户通讯录”写入函数进行自动填写。
前文说过,透视表的数据全部来自于“流水”,透视表中的所有内容都不允许更改。所以,在透视表中需要哪些字段,“流水”中就要建立哪些标题,“流水”中的标题就是透视表中的字段。
“流水”中的标题
标题在使用过程中可以随时添加,所以不用担心因为报表的增加出现标题不够的情况。添加标题后我们要做的就是刷新一下,仅此而已。
制作流水表打开空白工作表,首先输入关键标题。我当初做的时候,由于已经确定要出哪些报表及单据,所以一次性把表格标题就建立了。作为演示,我们就逐步来增加标题,这样能更直观地看到超级列表相对于普通列表作为数据源为透视表提供数据支撑的优势。
我认为这些标题是必须要输入的
插入超级列表单击已输入内容的任意单元格,在“插入”菜单下点击“表格”,记住勾选“表包含标题”,超级列表创建完成。
超级列表添加
excel对操作者的行为判断还是很智能的,已自动选择已输入内容的单元格作为列表区域。
勾选“表包含标题”
为什么要使用超级列表?有什么作用?
透视表的结果不是无缘无故生成的,它的数据源就是”流水“的列表区域。这就要求我们在录入了新数据以后,透视表的数据源要能自动扩展才能使透视表的数据得到更新,超级列表完美地实现了这个需求。如果用普通列表的话,录入新数据后,要么手动扩展数据区域,要么写一长串函数来实现数据区域的自动扩展。很显然,我更愿意采用超级列表。
超级列表的作用当然不止一个,还包括快速调整视觉效果:
列表视觉效果的调整
简单的求和、计算平均值、最大值、最小值、计数等。
我们也可以插入切片器进入操作。
切片器的使用
划重点:逐行录入
不管你是否使用超级列表,只要你打算进行数据提取,数据必须逐行录入。在超级列表中,是无法进行合并单元格这个操作的。在普通列表中,也要禁止使用合并单元格。
必须逐行录入数据
格式设置作为数据源,我们对版面是否美观不必太在意。但数据录入必须规范,不规范的数据直接影响统计结果甚至导致透视表罢工。特别是日期,必须录入标准格式。
那么如何控制日期列只能输入标准日期格式呢?
数据验证(数据有效性)的设置我使用的版本是office365订阅版,这个功能叫”数据验证“,以前的版本叫”数据有效性“。”数据有效性“可以控制某列只能输入某种格式的数据,否则终止输入。现在我们对有关日期的数据列进行设置,要求只能输入标准日期。
”数据验证“位于“数据”菜单下
数据验证
(1)选中日期列,打开”数据验证“,允许条件选择“日期”,开始日期随意填写。
开始日期也可以填写你的期初日期
小技巧:在超级列表中,如果要选择某列,把鼠标移到标题处,鼠标呈向下的箭头形状时点击,即可选择整列。如果要选择某行,把鼠标移到该行左侧,鼠标呈向右的箭头形状时点击,即可选择整行。这个操作对数据很多时非常有用。
(2)在数据验证对话框直接切换到”出错警告“,在样式选择”停止“,标题及错误信息填不填写均可。确定退出对话框。
强迫症的话就全部输入吧
样式有停止、警告、信息三个可选项。如果选择其它两项,软件在进行警告、信息提示后仍然可以输入不规范的日期数据,我们要做的是终止输入不规范日期格式,所以选择停止。
(3)结果演示
小技巧:快速输入当前日期的快捷键ctrl+;(即ctrl+分号)。
重复提示设置在接到维修件的时候,我需要知道每台设备原来是否经过维修,利用机身号具有唯一性的特点,在”机身号“所在列设置数据重复提醒。
(1)选择”机身号“所在列,打开”数据验证“,条件选择”自定义“,公式输入:=COUNTIF($D$2:D2,D2)=1
公式解释:countif是一个统计函数,我们利用这个函数来进行重复值的统计,如果重复值等于一,则正常输入。如果不等于一,则弹出提醒。在本例中,我的机身号在D列,从D2开始查找,所以区域参数为$D$2:D2,D2。注意两个符号”$\"必须输入,起绝对引用作用。否则随着数据区域的扩展,引用会出现错误。
(2)切换到“出错警告”,机身号重复时我们只需要弹出对话框进行警告,但要求仍然能够进行输入数据,所以样式选择“警告”。最后点击“确定”退出。
选择\"警告“
(3)我还希望录入重复机身号时除了弹出对话框提示外,再自动填充重复数据所在单元格的颜色,以利于我查看。条件格式可以实现这个目的。
条件格式设置:选择机身号所在列,按图示操作。必须选中列再进行条件格式的设置
格式任选,也可以自定义
(4)结果演示,输入重复机身号时软件弹出对话框给于提示并用颜色填充重复数据所在单元格,仍然可以进行输入。
点击“是”则接受输入,点击“否”则拒绝输入
客户信息自动填写(1)建立通讯录
我不止遇到一位朋友在同一列由于信息填写前后不一致导致统计结果混乱的情况。如本例的“客户单位”所在列,有时填写的单位全称,有时填写的单位简称,我们当然知道是同一家公司,但excel不知道,它忠实地按填写的数据进行分类汇总,导致结果混乱。
怎么杜绝这种情况的发生呢?一般来说公司都有一个客户通讯录,我们就利用vlookup函数将通讯录自动写入“流水”中客户姓名和客户单位所在列。
我们可以把通讯录复制进本工作簿,虽然说excel可以跨工作簿连接,但在同一个工作簿操作要方便得多。
将通讯录复制进本工作簿(虚拟数据,勿对号入座)
考虑在客户编号列采用下拉列表输入,客户姓名和客户单位自动填入和客户编号对应的信息。这样操作就杜绝了“客户单位”列可能发生同一家公司前后信息填写不一致的情况。
(2)客户编号列下拉列表输入设置
通讯录依然使用超级列表制作,选择“客户编号”所在列后按图示进行设置,定义名称:客户编号。定义名称
如果要查看名称是否定义成功,可以点击“名称管理器”进行查看,在这里可对定义的名称进行管理。打开名称管理器可以看到刚才定义的名称
选中“客户编号”所在列,打开数据验证对话框,按图示进行设置。来源输入“=客户编号”,其中“客户编号”就是我们刚才定义的名称。切换到“出错警告”,这样设置就意味着必须填写通讯录里的编号,否则终止输入。所以,如果有新客户需要填写,必须首先更新通讯录。效果演示通讯录没有的编号不能进行输入
因为通讯录也是超级列表制作的,所以如果更新了通讯录,新的客户编号会自动出现在下拉列表里。
(3)对应的客户姓名和客户单位自动填写
点击“客户姓名”列任意单元格,写入函数“=IF([@客户编号]=\"\",\"\",VLOOKUP([@客户编号],表1,2,0))”,敲回车后公式即自动整列输入,这也是超级列表的作用。从文中复制公式的时候排除最外层的引号
函数解释:
1.“@客户编号”即流水表中”客户编号“所在列标题,“表1“即通讯录工作表中超级列表的名称,”2“即通讯录的第二列。复制公式的时候一定要按你的情况修改。
2.我加了一层if函数,意思是如果“客户编号”空白,则“客户姓名”空白。否则填写客户姓名。
如何知道超级列表的名称?其实这就是我们在创建超级列表的时候excel自动定义的一个名称。拿本例通讯录来说,选择超级列表的数据区域,就能在左上角看到该表的名称为“表1”。
(4)在“客户姓名”所在列任意一个单元格执行复制,再到“客户单位”所在列任意一个单元格执行粘贴,将公式中“2”修改为“3”,敲击回车。
(5)效果演示
生成第一个单据:维修厂商设备签收单
接件录入信息后,准备送修。送修时得有一个签收单让维修厂商签收,毕竟白纸黑字才是移交凭证。
(1)当前的数据如图所示,我们将利用这些数据生成一个透视表。
虚拟数据,请勿对号入座
(2)单点数据区域任意一个单元格,然后按动图操作
(3)点击“确认”后,可以看到excel自动创建了一个“sheet1\"工作表,双击\"sheet1\"把这个工作表的名字改为”维修厂商签收单“。
也可以右键“sheet1\"执行重命名
(4)点击”数据透视表1“的任意位置,弹出”数据透视表字段“对话框。”流水“工作表中的标题全部作为字段排列在字段列表中。透视表中还没有任何字段。
(5)添加字段,将字段拖动到下方各区域。
产品名称、型号、机身号、是否过保等字段拖入行区域,生产厂家(即维修厂商)字段拖入筛选区域,再把机身号拖入值区域。现在只管拖入,不用理会版面
为什么拖入的区域不同?各区域有什么作用?现在不解释,后面你自然明白。
(6)版面调整:在创建的透视表任意单元格单击,即出现“数据透视表分析”和“设计”菜单。
透视表提供了几种布局,我习惯采用“以表格形式显示”和“重复所有项目标签”两种布局。透视表布局设置
透视表对所有行字段默认进行了分类汇总,所以版面需要调整。确实有点乱
取消分类汇总:excel默认行字段全部显示分类汇总,我们只需要”产品名称“显示分类汇总,固先取消所有分类汇总再来添加需要的分类汇总。产品名称添加分类汇总:右击”产品名称“字段,添加分类汇总。我们来演示一下现在,你应该知道各字段拖入不同区域的用途了:
筛选区域:是对整个透视表进行筛选。
列区域:先不用理会,后面应用到再解释。
行区域:可以看作是正文,拖入需要显示的字段。
值区域:对数据进行计算,一般拖入数值进行求和等,也可以拖入文本进行计数。
→“机身号”在行字段出现了,为什么还要拖入值区域?
作为统计利器,透视表的值计算类型不光是求和,还有计数、平均值、最大值、最小值等。拖入文本格式,值的计算类型就是计数。就本例而言,我们需要统计产品的数量,随便拖入一个字段进值区域都可以。这样就避免在“流水”中再建一列“数量”的标题,实际上在”流水“中如果建立一列“数量”标题对这个实例是没有意义的,因为每个机身号就是一行,代表了一台设备,我们在单据或报表中需要的时候用透视表进行计数就可以了。
值字段的计算类型
(7)修改值计算类型
我在“机身号”列随意输入的机身号都是数值,拖入值区域后透视表默认的计算类型为求和。但是我们需要的是数量,所以把求和改为计数即可。修改计算类型
修改后的效果(8)更新“流水”,刷新透视表
我们发现这个签收单还缺少一个关键字段:送修日期。前文说过,透视表是不允许修改任何数据的,所以要在“流水”中添加该标题。添加标题后执行“全部刷新”即可。在“流水”中添加送修日期标题列
添加完成后执行“全部刷新”
回到透视表,“送修日期”已进入字段列表,拖入筛选区域。可以看出,不管是哪个区域都可以拖入多个字段。
(9)改变筛选字段布局
拖入多个筛选字段后,默认是垂直排列的,现在我需要改为水平排列。修改筛选字段布局
(10)排版:和超级列表一样,透视表内置了很多样式,直接选取就可以了。
将“计数项:机身号”字段修改为“数量”字段,然后执行样式选取。选择你喜欢的
如何修改字段:和普通表格一样,点击该单元格直接修改。需要注意的是如果透视表提示“已存在字段”之类的提示,加一个空格就行了。
和普通表格一样,透视表也可以设置单元格的格式,比如“数量”增加单位“台”。首先右击“数量”,然后按动图操作。批量设置分类汇总行格式:一般来说,分类汇总行的格式有别于明细数据,透视表对分类汇总行的格式设定非常方便。移动鼠标到任意分类汇总行的左侧,鼠标的形状变为向右的小箭头,此时点击鼠标,分类汇总行即全部选中。
增加表头:这个操作就不演示了,据需求而定。(11)增加表尾
这个有点麻烦,当透视表数据行增加时,下方的空白单元格将被覆盖而不是下移,如果在透视表尾下方输入表尾的话,随着数据的增加表尾将被覆盖。新建一个“表尾”的工作表。各单据的表尾内容不尽相同,这个工作表专门用来书写各单据或报表的表尾。表尾全部在这里增加
添加相机:excel相机默认不在工具栏中,使用之前手动添加一次。打开excel的“选项”,按图示添加。快速访问工具栏
利用相机添加表尾:在“表尾”工作表点击需要用作表尾的内容,按动图操作。(12)调整版面后打印预览如图:
(13)再来测试一下数据行增减的使用情况
相机的大小不受列宽、行高限制,只需要设置一次,以后按需要拖动位置即可。虽然相机是以图片的格式插入的,但其内容随“表尾”工作表内容的更改而同步更改。相机图片格式类似于矢量图,调整大小不影响清晰度。
(14)好了,维修厂商签收单制作完毕,来实战一次。
比如今天接了一批维修件,我已经录入“流水”,决定11月1日送修,送修日期填写完毕并执行了“全部刷新”。“流水”已录入完毕,准备送修
快速完成签收单的排版及打印再生成一个客户报价清单(1)维修商收到设备后,检测结果很快反馈过来。我需要客户确认是否进行维修,这就需要我向客户出示检测结果及维修金额的清单。所以需要在“流水”中添加“检测结果”及“客户应付“标题,这时候也顺便把维修商的维修金额一起添加,我们生成维修商结算表的时候也需要这个字段。
录入数据后执行全部刷新
(2)制作表尾:在“表尾”工作表按需求制作一个表尾。
表尾都在这个工作表制作
(3)生成一个透视表,字段按需要拖入各自的区域并排版。
和上一个清单不同的是,这次我在值区域拖入了两个“客户应付”。计算类型分别修改为求和、计数。排版方法参见前文
拖入字段的时候一定要严谨,千万别把维修商的金额拖进来,对客户报价就拖入\"客户应付“字段。
然后把值区域的两个字段分别改为“客户应付”和“数量”并设置格式。格式设置参见前文
(4)添加表尾后的打印预览。
客户应收款和开票统计
掌握了以上的操作,后面的内容就简单了。
(1)款项的应收应付永远都是重点。对客户的应收款和对维修商的应付款以及发票的开具等数据我们都必须牢牢地掌握。
(2)在上面的操作中,数据已经添加到“客户应付”,要统计客户的应收款和发票开出情况,就必须要添加以下标题:客户已付、收款日期、开出发票时间、开出发票号码。
其实“客户已付”的金额应该等于“客户应付”金额,而“收款日期”又是必须要增加的标题,所以可以利用函数让“客户已付”自动填入。只要我填入收款日期就表示已经收到款,客户已付列就自动填入客户应付金额。“开出发票时间”也是必须要记录的,所以顺便增加两个辅助例:开出发票状态和收款状态,也采用写函数的方式让其自动填入状态。1、 在“客户已付”列写入函数:=IF([@收款日期]=\"\",\"\",[@客户应付]);
函数解释:如果“收款日期”为空,则为空,否则填入客户应付金额。
2 、在“开出发票状态”列写入函数:=IF([@客户应付]=0,\"不开票\",IF(AND([@客户应付]<>\"\",[@开出发票时间]<>\"\",[@开出发票号码]<>\"\"),\"已开票\",\"未开票\"));
函数解释:如果维修金额为零,则填写“不开票”,如果“维修金额”、“开出发票时间”、“开出发票号码”同时不为空,则填写“已开票”,否则填写“未开票”。
发票记录是非常关键的数据,所以必须要求有金额、有时间、有号码才能视为已开票。用函数控制我们的操作行为,是为减少更多的麻烦。
3 、在“收款状态”列写入函数:=IF([@客户应付]=0,\"不收款\",IF(AND([@客户应付]<>\"\",[@收款日期]<>\"\"),\"已收款\",\"未收款\"))。
函数解释:和上一条同理。
经过以上处理,虽然本次增加了六列数据,但需要我们填写的就只有”收款日期“、”开出发票时间“、“开出发票号码”三列。在实际操作中按实际情况填写,开出发票时就填写“开出发票时间”和“开出发票号码”,收到款时就填写”收款时期“,一定要及时填写,才能保证各数据的适时性。
(3)准备工作完成,生成一个“客户结算”的透视表,这个表是我自己掌握客户往来情况用的,所以不用表头及表尾。
按图示拖入字段,两个辅助列在这里就产生了作用。这个数据是未收款的情况,其中未开票和已开票分别统计出来,一目了然。如果有其它要求可以随时添加字段
月汇总及统计视角的快速转换我每月都要向财务提交月汇总及多视角的统计数据,透视表在这方面的功能异常强大。我们尽管在“流水”中只输入了日期,生成年、月汇总及多视角的统计数据也是手到擒来。
(1)快速生成月汇总:其实在“流水”中以“数据验证”的方式控制标准日期的输入就是为了这一刻。我以发票月汇总为例,首先生成一个透视表。
开出发票时间默认按天排列
(2)右击“开出发票时间”字段,然后按动图操作。
关键词:组合
(3)快速转换统计视角:透视表的行字段从左往右的权重递减,有时候我们要以“时间”为第一视角做统计,有时候要以“客户单位“为第一视角做统计,其实就在转换统计权重。
三个字段可以看做三个视角
我习惯在透视表中直接拖动字段达到目的,如果要直接拖动,首先要简单设置一下。勾选
结束
客户的数据管理就算完成了,你可以根据需要再增减字段,相信你已经可以利用透视表生成你需要的报表及单据。至于维修商的往来,其实和客户一个道理,添加相关标题,只要“流水\"有记录,你也一样可以生成和维修商的结算,发票,维修件取件查询等单据和报表。
制表的时候可能觉得很繁琐,一旦制作完成,我们的工作将无比轻松,我们要做的就是在”流水“中更新数据再刷新一下,仅此而已。
公交车售票员已经失业了,高速公路大量增加ETC车道,2025年中国制造行业平均每一个操作人员将面对一百多台机器人。
科技进步太快,每一个行业都被高科技笼罩。
我时时都可能被淘汰。
所以,每天进步一点点吧。尽量延续我被淘汰的时间,希望能坚持到拿社保的那一天。
我喜欢和别人分享。
分享,也是自己进步的机会。希望我的这个分享能达到抛砖引玉的作用。