同excel按日期统计数量求和内自动数据求和

【温馨提示】亲爱的朋友,阅读之前请您点击【关注】,您的支持将是我最大的动力!#锁定单元格#

今天整理了几个Excel操作技巧,都是工作中最常用的,附详细操作步骤,易学易懂,为了提高工作效率,赶紧学起!

选中数据区域和求和结果存放区域,按Alt+=键,完成多行多列同时快速求和。

选中求和数据区域,按Ctrl+G键打开定位窗口;

选择【定位条件】-【空值】-【确定】;

最后按Alt+=键,快速完成小计求和。

03.带单位的数字求和

表格中需要计算的数字后面都带着单位“万元”,可用套用下面这个公式完成求和;

04.按单元格颜色求和

在需要参与求和的单元格上点击鼠标右键,在弹出 的菜单中依次选择【筛选】-【按所选单元格的颜色筛选】;

计算结果就显示在了目标单元格中。

选择“姓名”单元格区域;鼠标右键点击选中区域,在弹出的菜单中选择【设置单元格格式】;

在弹出的【设置单元格格式】对话框中,选择【对齐】选项卡-【水平对齐】下拉框-【分散对齐】,【缩进】调整为1;

鼠标双击单元格进入编辑状态,将光标放到需要换行位置,按Alt+回车键就可以强制换行。

07.快速录入相同内容

选中需要输入内容的单元格区域,输入内容后按Ctrl+回车键完成。

08.输入0开头的数字

方法一:录入0前先在英文状态下输入一个单引号“ ' ”,再输入数字即可;

方法二:录入前先选择录入单元格区域,鼠标右键设置单元格格式为【文本】即可。

09.快速复制上一行内容

选中一行,按Ctrl+D键完成快速复制上一行内容。

选中目标单元格区域,依次点击【数据】-【删除重复项】,在弹出的对话框中单击【确定】,重复值就被删除了。

点击【开始】选项卡中【条件格式】按钮,在下拉列表中选择【突出显示单元格规则】-【重复值】,选择突出显示的填充色,最后【确定】即可把重复值都标出来。

12.分数(1/2)的输入方法

当我们在表格中输入1/2,回车确认后变成了日期,如何才能输入分数呢?

先输入一个0,再输入1/2 即可

13.快速输入产品编号

一般产品编号由固定前缀加数字或字母组合,如:E-ACC-1001。

选中需要录入产品编号的单元格区域,鼠标右键选择【设置单元格格式】,在数字页面下,分类选择【自定义】,在类型框中输入:"E-ACC-"0000,点击【确定】,这样输入编号时只输入后面“1001”即可。

按住Alt键不放,再按数字键盘的41420,就是√,按41409就是×

选择需要去除小数点的数据,按Ctrl+Shift+1键快速去除小数点。

选择需要删除空行的单元格区域,按下Ctrl+G键打开定位窗口;

选择【定位条件】-【空值】-【确定】,这样空行就被选中了;

最后按下Ctrl+ - (减号),选择删除整行,最后【确定】即可

表格中需要把数字提取出来,以便进行计算

首先在对应行中输入需要提取的数字,回车键确认后,按Ctrl+E即可完成全部提取。

18.快速核对两列数据

选中需要核对的两列数据;按下Ctrl+\键,差异数据就被选中了,可以填充色突出显示。

先将前两行填充上需要的颜色,然后选中这两行,单击【格式刷】按钮,光标变成刷子,把剩余需要填充颜色的单元格区域刷一遍就可以了。

选中需要调整的列,然后将光标移动上任意选中列号右边,变成带左右箭头十字形状,双击即可完成列宽调整

输入平方按Alt+178(数字键盘),输入立方按Alt+179(数字键盘)。

选中需要输入手机号的单元格区域,按Ctrl+1键,打开【设置单元格格式】对话框,选择【数字】-【自定义】,在类型框中输入:000-,最后点击【确定】按钮返回。

再输入手机号后自动分段显示。

23.快速给数字添加单位

选中单元格区域,按Ctrl+1键打开【设置单元格格式】对话框,选择【数字】-【自定义】,在类型框中输入:G/通用格式万元,最后点击【确定】按钮返回。

选中日期单元格区域,点击鼠标右键,选择【设置单元格格式】,调出设置窗口(或按Ctrl+1键);

在设置窗口中选择【数字】页面,分类选择【自定义】,类型框中输入:aaaa

最后点击【确定】返回工作区,日期就显示成星期了。

当我们表格需要输入的数据在这一列中已经输入过,可以利用下拉菜单选择输入,提高输入数据效率。

选中单元格,按Alt+↓(下方向键),即可出现一个下拉菜单可供选择。

小伙伴们,在使用Excel中还碰到过哪些问题,评论区留言一起讨论学习,坚持原创不易,您的点赞转发就是对小编最大的支持,更多教程点击下方专栏学习。

}

摘 要:万年历可用高级语言编程制作,在没有现成平台的情况下,编程过程较繁琐。利用Excel提供的函数、数据公式及VBA开发功能制作万年历,阐述在Excel平台上无需编程实现万年历制作方法。用Excel制作万年历比用其它高级语言编程方法简单高效,体现了Excel强大的功能以及多途径解决问题的实用性。

关键词:Excel日期函数;数组公式;VBA开发;万年历制作

作者简介:王毅敏(1963-),男,复旦大学国家级实验教学示范中心高级工程师,研究方向为管理信息系统、计算机教学。

日常工作学习生活中经常会处理一些数据。Microsoft Office是一套由微软公司开发的办公软件套装,Excel是其中一款电子表格处理软件,其界面友好,功能强大实用,能很好解决人们日常工作学习生活中遇到的数据处理问题,在各行各业广泛应用。

在教学领域,可用Excel图表功能制作高中数学函数动态图形[1],用功能或函数进行数值计算[2],对学习成绩进行统计分析[3-8],进行实验模拟[9]等。

在人事管理中,可用Excel管理所有职工资料,处理公司人事调动和绩效考核等重要事务。

在生产领域,管理员需要时刻明确产品的生产总量和需要生产量,数量要精确。了解生产整体进度,以便随时调整计划并做好人员配备工作[10-12]。

财务管理中,Excel被公认为是一个通用的财务软件,凝聚了许多开发者的智慧,以及广大财务人员和投资分析人员的工作经验,具有强大而灵活的财务数据管理功能[13-15],Excel还为用户提供VBA功能开发接口[16]。

上述應用都离不开Excel所特有的平台及强大的函数、图表、内置可加载的应用程序、VBA开发工具等功能。Excel应用平台由一些单元格组成,擅长各类表格的数据处理,利用它来制作万年历也非常合适。因为有现成的平台,又有多种函数及功能,不需要编写很长的代码,只需利用函数及功能就可完成。

下面阐述3种万年历制作方法。

1 利用日期函数制作万年历

首先,用函数column()及row()生成数据矩阵,作为月份日期。接着要解决3个问题:①确定本月第一天的星期数;②计算本月最后一天的日期;③隐藏不是本月的日期。

任选Excel文件中的一个单元格,如在A21单元格中输入公式:=(ROW()-4)*7+COLUMN(),如表1所示,第3行开始的数值为本公式填充后的运行结果。

1.1 确定本月第一天的星期数

在表1的基础上生成某月日历,关键是确定本月第一天日期对应的星期数以及本月最后一天的日期才能确保结果正确,以下是具体的实现过程及注意事项:

本月第一天是某月1日但不知道是星期几,这时可用WEEKDAY函数计算某年某月第一天的星期数,语法格式为WEEKDAY (date,type),用type 为1的选项返回后的结果是:星期日为1,星期一为2,依此类推,星期六为7。

WEEKDAY函数计算本月第一天的星期数,把它看成一个修正值,通过减去单元格中的数值调整本月第一天对应一个正确的星期位置。在本例中,这个修正值是 WEEKDAY(DATE(YEAR($A$19),MONTH($A$19),1),1)-1,计算结果为4。对现有单元格减去这个值,正好与星期四对应。只要本月对应正确,其它月份就都是正确的。DATE(YEAR($A$19),MONTH($A$19),1)是构建的日期,即2018年2月1日,星期四,WEEKDAY(DATE(YEAR($A$19),MONTH($A$19),1),1)返回值是5。

要注意的是,A19单元格存放的是年月,必须绝对引用,防止填充时移位。其与利用数组公式制作万年历的方法不一样,因为该方法不需要进行填充操作。

需要说明的是,在填充过程中,如出现“#####”错误信息,是因为日期数为负所以出错,将单元格格式设为常规就可恢复正常。另外在这儿出现了负值可暂不处理,在后面将它隐去。运行结果如表2所示。

表2 用修正值调整后的结果

至此,表中显示2018年2月1日是星期四,改变A19单元格年月进行测试,结果应该是正确的。但还有两个问题:①表中出现了小于等于0的数值;②大于本月最后一天的数值。

1.2 计算本月最后一天的日期

众所周知,每个月的最后一天不是一个固定值,但是,下个月的第一天是明确的,可以用下个月的第一天减去1的方法确定本月的最后一天。公式为 

1.3 隐藏不是本月的日期

在表2中,出现了小于等于0的数值,也出现了大于本月最后一天的数值,这都是不符合要求的,需要隐去。可利用if函数设置:如果数值小于等于0或数值大于本月最后一天,就设置为空格(隐去日期),否则正常显示,具体公式如下:

填充后的运行结果如表3所示。

表3 隐去不是本月数值的最后结果

IF函数看上去很复杂繁琐,现作进一步说明。逻辑判断部分是一个OR函数的嵌套,第一部分判断本月是否为负数,第二部分判断是否比本月最后一天的日期大。两部分只要有一个为true,则执行IF函数的true部分,对所在单元格设置为"",即单元格置空,不显示任何信息。否则执行IF函数的false部分,即正常计算出本月日期。

每个单元格的计算式是一样的,但输出结果不一样,原因是引用了row()及column(),它们分别返回本单元格的行和列,所以才有不同的计算结果。

2 利用数组公式制作万年历

在Excel中,日期用正整数表示,某年某月某日是一个正整数,加上1为下一个日期,依此类推。据此,可以用数组公式计算,顺势表示出日期。

具体过程如下:①通过数组公式生成数据矩阵;②数组公式与单元格中的日期数据求和,生成连续日期;③确定本月第一天星期数;④隐去不是本月的日期(指上月日期与下月日期);⑤设置单元格格式,仅显示日期。

2.1 通过数组公式生成数据矩阵

表4 用数组公式计算结果

2.2 数组公式与单元格中的日期数据求和,生成连续日期

用 DATE函数构建本月第一天日期,选中A31∶D36区域,输入公式:

表5 加上本月1日后的结果

2.3 确定本月第一天星期数

确定本月第一天星期数前面已经详细介绍,在此不再赘述。选中A31∶D36区域,在编辑栏中输入公式:

表6 修正值调整后并设置成日期格式结果

2.4 隐去不是本月的日期

可以用IF函數实现,只需判断月份是否为本月即可。用MONTH函数计算出月份值,判断是否与本月份相同。如果是本月日期则正常显示,否则设置为空值,公式如下 :

表7 隐去不是本月日期的最后结果

2.5 设置单元格格式,仅显示日期

选中日期区域,设置自定义格式为:d,就可得到最后结果。

以上详细地介绍了制作月历的过程及方法,用同样方法可实现12个月的年历。最后,添加一个年份数值控件,通过按动这个控件按钮改变年份数值,系统将自动生成年度日历,也可用数据有效性功能实现年份选项,结果如图1所示。

这里用数组公式生成数据矩阵,配合函数计算整个万年历表。

公式计算过程:先计算第一行,如0*7+{0,1,2,3,4,5,6},结果是0,1,2,3,4,5,6,依次存入同行单元格中;换行后再计算第二行,1*7+{0,1,2,3,4,5,6},结果为7,8,9,10,11,12。依此类推完成整个数据矩阵的计算。

这些数据不是按回车键就能计算,必须启用数组公式快捷键才能算出结果。计算过程:先选中需要输出的区域,然后在编辑栏中输入上述公式,启用ctrl+shift+enter就可输出结果。再加上本月1日的日期减去一个修正值,确保本月第一天的星期数对应正确。然后利用IF函数判断是否为本月日期,进行隐去或显示。最后,对显示数据进行日期格式设置,就可制作出一个月的日历。

3 利用VBA 开发工具制作万年历

用VBA制作月历表,实现依据与前述类似,但需要编写VBA程序启用其功能,实现过程如下:①利用录制宏功能生成月历格式表;②编写程序填写日历数据;③设置事件触发运行日历生成程序。

3.1 利用录制宏功能生成月历格式表

所谓宏,就是一组指令集,通过执行类似批处理的一组命令完成某种功能。利用宏可完成很多程序原本并不支持的特殊应用,比如完成某种特殊的数据计算,或者文档的特殊格式设置及排版等。

启用开发工具选项卡,在文件→选项→自定义功能区中启用开发工具选项卡。启用VBA中的录制宏功能,在文件→选项→信任中心→信任中心设置→宏设置中选中“启用所有宏”。

录制宏代码,进入Excel编辑界面,可以看到开发工具选项卡,然后进入VBA开发平台,在代码组中有“录制宏”按钮。按下这个按钮,命名这个宏名称为“My_Macro”。在sheet1的A2∶G8区域中进行日历表格式设置。设置完成后,按下“停止录制”按钮,至此宏录制成功,自动生成VBA代码。

设置年月选项,进入Excel 编辑界面,选中数据选项卡,在数据工具组中找到数据有效性功能,对C1及D1单元格设置选项。C1中设置年份,D1中设置月份1-12。对C1及D1单元格分别设置自定义格式为:yyyy“年”及m“月”格式,完成后的结果如表8所示。

3.2 编写程序填写日历数据

本程序的运行结果是在A3到G8单元格区域内生成日历表,共6行7列,程序有两层循环。

第1行:本程序名称,可供调用;第2行:录制的宏代码,因为太长此处省略;第5-7行:是一条语句,因为太长分为3行显示,语句最后的下划线为连接符。thismonth变量内存放的是经过修正调整后的日期;第8行:if语句判断thismonth内的月份与单元格D1内的月份数是否一致;第9行:if为true,即不是本月日期,则对单元格置空,其中单元格函数Cells(i + 2, j)中的行标为i+2,是因为日历表从第3行开始填写,所以必须加上2进行调整;第11行: 填写本月日期到单元格,设为日期格式。

3.3 设置事件触发运行日历生成程序

至此为止,主要编程工作完成,后面的工作是要触发程序运行。根据用户使用习惯,每次对年份或月份选定后,自动对月历日期及格式进行更新,因此可利用VBA事件触发功能完成这项工作,主要代码如下:

这是一个事件触发子程序,放在sheet1对象中,选中这个sheet1中的D1或C1单元格,则触发Worksheet_Change子程序运行。下面对程序进行说明:

第1行:子程序的入口参数为单元格地址,Target定义的类型为Range。

第2行:用IF语句对入口参数进行判断,如地址为$D$1 或 $C$1 则为true,否则為false。

第3行: IF为true,调用子程序Calender。运行后完成月历表设置及日期数据更新。

表9是选中$D$1和$C$单元格中的数字“2018”和“10”后运行的结果。

表9 触发程序运行后的结果

至此月历制作完成,生成年历需将月历生成程序修改成一个子程序或对象,通过循环调用可以方便地生成整年的年历,这里不再赘述。总之,用VBA编写程序实现万年历,比用函数及数组公式繁琐,但思路更简单,原因是程序更擅长这类问题的解决,但应用人员需要对VBA的运行环境及语句有一定了解。

}

我要回帖

更多关于 excel按日期统计数量求和 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信