这周学习了office三件套,其中最喜欢excel。于是打算利用excel做一些每日数据的汇总,但在这之前要做一个自己的课表,以便于对每日要做的事有一个更详细的安排。其中主要用到的函数有:
today()
这个函数可以将系统时间转化为Excel可识别并进行计算的日期;
mid(目标单元格,提取数据的起始位置,数据长度)
假如A1单元格数据是“第5周”,然后在B1中输入”=mid(A1,2,1)”,此时B1就显示为”5″;
mod(被除数,除数)
mod函数返回的值就是余数,例如:mod(7,2)返回的值就是1——”7/2=3~1″
roundup(数值,保留小数位)
roundup函数用于向上舍入数字, roundup(1.234,1)的返回值就是1.3
date(年,月,日)
date函数即日期,同样可被Excel进行计算
if(条件,满足条件返回的值,不满足条件返回的值)
if函数无论在哪都很常用,if(1>2,6,7)输出的即为7
value()
value即将数据转化为数值
len()
返回数据字符数量
lenb()
返回数据字节数量
然后就是整体的思路了。开学日期为3月1日,利用date函数将2021年3月1日转化为可进行计算的日期//date(2021,3,1)//用today函数返回的日期减去开学日期就是开学天数,每周七天,开学天数除以7为开学了几周,但是出现了一个问题:比如说我现在上着第七周的课,但是第七周还没有过完,这是利用上述步骤所得到的数便是6.×××,这是就要套用到roundup函数了。最终整体就是
//=”第”&ROUNDUP((TODAY()-DATE(2021,3,1))/7,0)&”周”//
显示在单元格内的就是”第×周”。
我们知道有些课只在某些周上,比如英语课只在1~9周上课,我们就要用if函数来选定时间区间,如何选定呢?之前我们完成的”第×周”就可以拿来用了,因为这个×是根据系统时间而变化的,这正是我们想要的,只需要当1<=”×”<=9的时候输出”英语课就行了”,提取出×就需要用到mid函数了,假如”第×周”所在单元格为A1,那么显示课程的单元格的整体就是
//if(mid(A1,2,1)>=1,if(mid(A1,2,1)<=9,”英语课”,””)””)//
同时满足两个if条件时才会返回”英语课”,任一个条件不满足就会返回空白值,如果更规矩一点就在mid函数外套用一个value函数。//其实不加也一样//
然后问题又来了,有些课单周上,有些课双周上,这个就要用到最后一个提到的函数了——mod,mod常用的一个功能就是判定数值奇偶性,若是英语课单周上,那么只需要多加一个周树为单周的条件即可——
//if(mid(A1,2,1)>=1,if(mid(A1,2,1)<=9,if(mod(mid(A1,2,1),2)=1,”英语课”,””)””)””)//
最后就是美化一下了,比如我不止想要显示课程,我还要表格显示出上课地点以及任课老师,但是这样数据太长了,不美观。这时我们可以使用到公式换行”char(10)”,最终的整体——
//if(mid(A1,2,1)>=1,if(mid(A1,2,1)<=9,if(mod(mid(A1,2,1),2)=1,”课程名称”&char(10)&”上课地点 任课老师”,””)””)””)//
然后又有一个问题了,mid(A1,2,1)只能提取出一个数,对于“第10周”及以上输出的都是一个数字,也就是说第10周和第1周的课表是一样的,因为10仅被提取出了1,0却没有,这时候我们需要用到另外两个函数len()与lenb(),len函数返回的值就是选定单元格的字符数量,而lenb返回的是字节数量,简单通俗地讲:若A1是“第9周”,那么len(A1)返回的就是3,而lenb(A1) 返回的就是5,汉字占了两个字节一个字符,阿拉伯数字占了一个字节一个字符,那么lenb(A1)-len(A1)就是汉字的数量,len(A1)-(lenb(A1)-len(A1))就是数字的数量,也就是2*len(A1)-lenb(A1)。对于想提取出来混合文本中连续的数字,我们可以将mid的起始位置设定为第一个数字开始的位置,提取字符数量就为2*len(A1)-lenb(A1),引入到我们之前写的函数式中就是
//if(mid(A1,2,2*len(A1)-lenb(A1))>=1,if(mid(A1,2,2*len(A1)-lenb(A1))<=9,if(mod(mid(A1,2,2*len(A1)-lenb(A1)),2)=1,”课程名称”&char(10)&”上课地点 任课老师”,””)””)””)//
但记得要将此单元格的自动换行打开(位于【开始】中的【对齐方式】栏中)
当然没有单双周之分的课程将mod条件去除即可