精华内容
下载资源
问答
  • 重复、求和,错过了上期了可以点这传送门:【Excel必知必会】函数篇(上)本篇接着往下讲:05查找匹配5.1 VLOOKUP匹配=VLOOKUP(找什么,查找范围,返回范围中列,匹配方式)=VLOOKUP(E1,A1:B3,2,0)在A1到B3这...
    点击上方蓝色字关注我们!

    函数篇(上)讲了数字处理、判断、计数&重复、求和,错过了上期了可以点这个传送门:【Excel必知必会】函数篇(上)

    本篇接着往下讲:

    05

    查找匹配

    5.1 VLOOKUP匹配

    =VLOOKUP(找什么,查找的范围,返回范围中的第几列,匹配方式)=VLOOKUP(E1,A1:B3,2,0)在A1到B3这个范围内,找E1的值,精确匹配返回A1到B3范围对应的第二列的值

    VLOOKUP应该是大家都非常熟悉的匹配函数了,其实还有很多花里胡哨的用法我觉得没有什么必要去研究,在这里也提示一下,如果是多条件匹配的话,可以先用辅助列将多条件合并为单条件(用"&"将条件连接起来就行了),再进行匹配:

    8a1254a87d68d63c59003770121f6bf3.png

    对于绝大多数人来说VLOOKUP已经能应付工作了,但是他本身还有一些小缺陷,主要体现在两方面,一是只能从左找到右,比如只能在第一列匹配对应第四列的值,不能在第四列匹配对应第一列的值,要达到这个目的的话只能修改数据源的格式,但是很多数据源是不好动;二是要同时匹配行和列的条件,VLOOKUP是做不到的,

    于是我们可以用接下来要讲的INDEX+MATCH组合函数,完美解决上述问题。

    5.2 INDEX+MATCH匹配

    这个函数我拆开讲,但是以后我们在使用的时候是要直接一起写的

    5.2.1 先看INDEX

    =INDEX(查找区域,行数,列数)

    16c274dd7535a5e9f024e07ba7a2e428.png

    =INDEX(B1:B3,2)   返回B1到B3这个区域的第二行的值

    798bb2506d4c190e65c2fed6040896b6.png

    =INDEX(E1:F3,3,2)  返回E1到F3这个区域第三行第二列的值

    这个函数很简单,相信大家看了上述两个例子就懂了,INDEX函数其实就是通过索引号来寻找对应的值,但是索引号得靠我们手动输入,这就达不到我们匹配的目的,总不能我自己去数据源里面找我的目标在第几行吧?

    5.2.2 所以这时就要用到MATCH函数了,它能帮我们找到这个目标值在第几行

    =MATCH(找什么,在哪里找,0)   第三个参数0就是精确匹配

    e39dc94f5917dff14c768d50fdf9dd26.png

    =MATCH(D1,A1:A3,0)   在A1到A3区域找D1的值(湖北),返回湖北在该区域的行号

    好了,到这里我就能用函数,把湖北在B列对应的值匹配出来了,只要我把MATCH函数放在INDEX函数的行号参数里面..

    35f27b5eb7d275dbb3cd7c4e6ca02da2.png

    =INDEX(B1:B3,MATCH(D1,A1:A3,0))   在A1到A3区域中,找D1对应B1到B3的值=INDEX(需要的结果所在区域,MATCH(查找条件,条件所在区域,0)) 这个函数多用几遍很快就能掌握

    这里要注意的一点就是,两个区域的起点必须相同,比如上例中的起点分别是B1和A1,他们是在同一行,如果在A2到A3中找湖北,那么返回的行号是1(因为湖北在这个区域的第一行),行号为1传递到INDEX函数后,它则会返回B1到B3区域的第一行的值,即123,这样匹配到的值全部都是错位,因此两个区域的起点必须相同。

    06

    单元格值的合并、拆分

    6.1 合并多个单元格的值

    =CONCATENATE(A3,A4,A5,A6,A8,A7,E6)=A3&A4&A5&A6...

    上述方法都行,如果用&作为连接符,在单元格中连接特定的字符串的话,用英文符的双引号引起来:

    18b4e5507dbb952a872207d7719f7b56.png

    6.2 计算单元格中的字符数

    = LEN(A1)

    984992088689a947af9b58924d3965f6.png

    返回该单元格的字符数I(标点符号也算一个字符)

    6.3 查找字符在单元格中的位置

    =FIND("查找的内容",单元格,起始位置)   第三个参数起始位置不填的话默认为1,即从左边第一个字开始数

    62663cc159e3237b81c33613b210484f.png

    第三个参数留空,因此返回的是正数第三个的位置。

    6.4 截取字符

    =LEFT(A1,3)    =MID(A1,3,2)=RIGHT(A1,2)

    5d636a8164d2fa144c33160f710daadb.png

    LEFT函数即从左数截取多少长度的字符

    341b89aad58efb2035265f35636ede72.png

    RIGHT函数即从右数截取多少长度的字符

    a7174467e90f98048c878192ee65c118.png

    MID函数即从第二参数的位置开始,截取到第三个参数长度的字符

    结合6.2和6.3的函数,我们又可以构造复合函数来应付稍微复杂的需求了,比如:

    我们平时拿到客户的序时账,经常会是科目代码\科目\明细...这样的结构:

    04ac9cfe7e25df72f7062107b86e7f92.png

    这时我们需要去除前面的科目代码要如何写呢?

    如果科目代码是一个固定的数字的话,比如都是6位数,那么我们用总长度-6,就可以得到除科目代码外的长度,再用RIGHT函数从右边截取这个长度的函数就行了

    c33cbf99819ee8f9ce37e9ade3dc0cf0.png

    当然,这里应该-7,应该还有"\"存在

    但是我们发现前面的科目代码位数是动态的,所以需要用一个函数获取科目代码的位数来代替刚刚的6,这时候就轮到6.3的FIND函数出场,我们从左边开始找"\"是第几位就行了对不对。

    a285836bb9c97da45a2db198078418cd.png

    看,用FIND能返回\在单元格中的位置,因此再把这个函数替换进行即可

    389efb235ad63549219096df8e4b50cb.png

    6.5 清除空格

    =TRIM(A1)    能去除前后的所有空格,若字符中间有空格,则会保留一个空格=SUBSTITUTE(A1," ","")  用空代替所有空格

    这两个函数的作用在右边写了,我们来看看实际的效果吧:

    3c8eee05a8a7681c424082221a83a571.png

    可以看到TRIM函数把前面的空格都去掉了,中间的空格也去掉了3个,还剩一个。

    1a12cbf2a90024592d6fb396f7070d6c.png

    而SUBSTITUTE函数则把所有的函数都替换为了空值。

    就等于我们平时用查找与替换,把空格都替换掉一样,那你可能会问为什么不直接用查找替换还要用公式呢? 

    是因为有时我们的数据源是动态的,但是查找替换的操作得人工一次次来,所以特定情况下用公式会更加方便点。

    07

    日期处理

    关于日期,首先我想告诉大家的是,Excel中的日期,本质上都是数字,看看Office支持中是怎么描述的:

    ce73b100dbf1b5f7fb80fc2413026e80.png

    说人话:你输入的日期,本质都是离1900.1.1距离多少天的数字,如果你把数字2转换为日期,那么它将显示1900.1.2

    7.1 计算两个时间点相差多少天

    如果你理解了我上述的解释的话,要算两个时间点差多少天,就直接用这两个时间相减就行了,因为本质上他就是离1900.1.1有多少天的数字嘛:

    086c44d6a3f93fa9ea3bbac9a6c39fb5.png

    7.2 年、月、日的间隔函数

    =DATEDIF(起始日期,终止日期,信息类型)其中信息类型:"Y":一段时期内的整年数。"M":一段时期内的整月数。"D":一段时期内的天数。"MD":两日期之间天数之差。 忽略日期中的月份和年份。 (Office支持中已不建议只用MD参数,存在错误)"YM":两日期之间月份之差。 忽略日期中的天和年份。"YD":两日期之间的日期部分之差。 忽略日期中的年份。

    一般我们就用Y、D、M就行了

    10a186cb262c3a839a2031e4ca6082e3.png

    这个函数是不能用=DA联想出来的,因为MD参数会出现一定的误差,微软把隐藏了,但是我们只要不要MD参数,还是能直接用的,这里就不展开了,测试固定折旧的时候可以试试。

    end

    好了,函数篇就这里了,一共是7类函数,我认为至少覆盖了工作的90%了,剩下的特殊场景需要用到的函数也可以通过搜索引擎来解决,如果觉得我的文章有用,可以转发到朋友圈哦~

    展开全文
  • 在对前面学习的数字处理中,主要...a:计算给定数字位数,目的以及关键点寻找与数字位数相同的取余整数例如:给定12345,与其位数相同的整数即为1000,只需要调用第一问的计算位数的函数。 b:计算除余以及除以的数...

    在对前面学习的数字处理中,主要遇到以下三种问题:
    1:输出给定数字的位数;
    2:将给定数字按顺序输出;
    3:将给定数字逆序输出。

    解决:
    1:给定数字除以10,去掉个位,计数器加一,依次直到处于结果为0
    2:按顺序输出。
    a:计算给定数字位数,目的以及关键点寻找与数字位数相同的取余整数例如:给定12345,与其位数相同的整数即为1000,只需要调用第一问的计算位数的函数。
    b:计算除余以及除以的数字,此时只需调用库函数pow,即pow(10,c-1),其中c定义为数字的位数。计算其目的是为了弃掉高位。
    c:循环打印高位并且取余弃掉高位,同时位数除以10,保证和数字的位数相同。
    3:第一步取余得到个位数并且打印,第二步弃掉个位即可,依次循环直到结束。

    以下为代码段:

    //求给定数字的位数 
    int GetFigure(int n)
    { 
    	int i;
    	for(i=0;n!=0;i++)       
    	{
    	    n/=10;
    	}
    	return i;
    }
    //计算位数的第二种循环方法
    int GetFigure(int n)
    {
        int count=0;
    	
    	if(n==0)
    	{
    	  return 1;
    	}//判断当数字为0时,输出1
    	while(n!=0)
    	{
    	  count++;//满足时位数加一
    	  n/=10;//弃掉个位
    	}
    return count;
    }
    
    //替换第二种方法中的while语句
    do
    	{
    	  count++;
    	  n/=10;//弃掉个位
    	}
    	while(n!=0);
    	
    
    //按顺序输出各个数字
    void PrintfOrder(int n)
    {
    	//得到数字的位数
    	int c=GetFigure(n); 
    	//得到除以和取余的数字
    	int m=(int)pow(10.0,c-1);
    	//顺序输出每位数字
    	do
    	{
    		printf("% d",n/m);//得到高位数字并输出
    		n%=m;//丢弃高位
    		m/=10;
    	}while(n!=0);
    	printf("\n");
    }
    
    
    //按逆序输出各个数字
    void PrintfReverse(int n)
    {
    	/*if(n<0)
    	{
    		printf("-");
    		n=-n;
    	}*/
    	do
    	{
    		printf("%d",n%10);//打印个位数字 
    		n/=10;//弃掉个位
    	}
    	while(n!=0);
    	printf("/n");
    }
    

    设置主函数,在其中调用各个函数打印即可。
    完成

    展开全文
  • 我们有时候遇到日期格式可能是2004-1-12 ,系统自动将...下面的几个函数可以轻松搞定。 将一个一位数字前面加零function FillZero(str)ttt=strif len(str)=1 thenttt="0" & strend ifFillZero=tttend function转化
     我们有时候遇到的日期格式可能是2004-1-12 ,系统自动将月份中的0去掉了,但是有时候我们需要完整的日期格式 ,如:2004-01-12 那么怎么办呢?下面的几个函数可以轻松搞定。 
    '将一个一位的数字前面加零

    function FillZero(str)
    ttt=str
    if len(str)=1 then
    ttt="0" & str
    end if
    FillZero=ttt
    end function

    '转化日期,将 一位补上零 2003-1-2 --> 2003-01-02

    function ConvertDate(tDate)
    ttt=tDate
    if isdate(tDate) then
    ttt=year(tDate) & "-" & FillZero(month(tDate)) & "-" & FillZero(day(tDate))
    end if
    ConvertDate=ttt
    end function

    '输入一个日期时间串,转换成年四位,其他两位的新的日期时间串

    function ConvertDateTime(tDateTime)
    ttt=tDateTime
    if isdate(tDateTime) then
    ttt=year(tDateTime) & "-" & FillZero(month(tDateTime)) & "-" & FillZero(day(tDateTime)) & " " & FillZero(cstr(hour(tDateTime))) & ":" & FillZero(cstr(minute(tDateTime))) & ":" & FillZero(cstr(second(tDateTime)))
    end if
    ConvertDateTime=ttt
    end function

    展开全文
  • 我们有时候遇到日期格式可能是2004-...下面的几个函数可以轻松搞定。 '将一个一位数字前面加零function FillZero(str)ttt=strif len(str)=1 thenttt="0" &amp; strend ifFillZero=tttend function...
    我们有时候遇到的日期格式可能是2004-1-12 ,系统自动将月份中的0去掉了,但是有时候我们需要完整的日期格式 ,如:2004-01-12 那么怎么办呢?下面的几个函数可以轻松搞定。 
    '将一个一位的数字前面加零

    function FillZero(str)
    ttt=str
    if len(str)=1 then
    ttt="0" & str
    end if
    FillZero=ttt
    end function

    '转化日期,将 一位补上零 2003-1-2 --> 2003-01-02

    function ConvertDate(tDate)
    ttt=tDate
    if isdate(tDate) then
    ttt=year(tDate) & "-" & FillZero(month(tDate)) & "-" & FillZero(day(tDate))
    end if
    ConvertDate=ttt
    end function

    '输入一个日期时间串,转换成年四位,其他两位的新的日期时间串

    function ConvertDateTime(tDateTime)
    ttt=tDateTime
    if isdate(tDateTime) then
    ttt=year(tDateTime) & "-" & FillZero(month(tDateTime)) & "-" & FillZero(day(tDateTime)) & " " & FillZero(cstr(hour(tDateTime))) & ":" & FillZero(cstr(minute(tDateTime))) & ":" & FillZero(cstr(second(tDateTime)))
    end if
    ConvertDateTime=ttt
    end function


    展开全文
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    对一列中文字统一去掉最后一个字 讨如何去掉单元格中第一个数字? 论一下取最后一个单词方法 如何去掉单元格最后一位数字 如何在一列已经输入数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号...
  • 天遇到了一问题,就是要求我从一list中,把每字符串中间的几位取出来并在前面加上‘00’,每字符串分隔符是‘/’,我第一想法是把list弄到DataFrame中,然后循环把要取出来存到新list中,可是...
  • asp下格式化时间和日期的函数

    千次阅读 2006-02-04 17:42:00
    我们有时候遇到日期格式可能是2004-1-12 ,系统自动将月份中0...下面的几个函数可以轻松搞定。。。。。。将一个一位数字前面加零function FillZero(str) ttt=str if len(str)=1 then ttt="0" & str end if 
  • vbscript下格式化时间和日期的函数

    千次阅读 2006-01-20 14:59:00
    我们有时候遇到日期格式可能是2004-1-12 ,系统自动将月份中0...下面的几个函数可以轻松搞定。。。。。。将一个一位数字前面加零function FillZero(str) ttt=str if len(str)=1 then ttt="0" & str end if F
  • 400DreamWeaver插件

    2013-03-28 15:30:13
    mxp/在file菜单下增加一个新命令,可以列出最近编辑的几个文件。就好象Windows开始菜单中“文档” mxp/现在插件真是不得了!我恨不给每个插件都打上5分。这个插件可以做一段Flash动画,用来演示目标文件夹下...
  • 对一列中文字统一去掉最后一个字 讨如何去掉单元格中第一个数字? 论一下取最后一个单词方法 如何去掉单元格最后一位数字 如何在一列已经输入数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号...
  • #定义一更新变量滑动平均值操作需要向滑动平均类apply()函数提供一参数列表 #train_variables()函数返回集合图上Graph.TRAINABLE_VARIABLES中元素。 #这集合元素就是所有没有指定trainable_...
  • 把描述微分方程那个函数,也就是pdex1pde.m里面红色的字去掉是可以解得,解得结果如下图: 10 比较理想结果1.jpg 10 比较理想结果2.jpg 这两...
  • 把描述微分方程那个函数,也就是pdex1pde.m里面红色的字去掉是可以解得,解得结果如下图: 10 比较理想结果1.jpg 10 比较理想结果2.jpg 这两...
  • 几个程 序由简到难,表现了C语言源程序在组成结构上特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序基本部分和书写格式。 main() { printf("c语言世界www.vcok.com,您好!\n"); }  ...
  • 写给 Jscex 一些建议

    2020-11-28 13:18:24
    3. async 居然还有一 powerpack, 建议如果不是真 power 到十K体积,建议就放到默认 async 里。 4. 感觉太多内部细节暴露给了使用者,感觉不是很妥当。是否可以在现有 API 基础上,再...
  • 答: 这个问题用几个解决方案。我首选方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 13、关于内存对齐问题以及sizof()输出? 答: 编译器自动对齐原因:为了提高程序性能,数据结构...
  • 日期格式化

    2008-04-17 17:59:00
    我们有时候遇到日期格式可能是2004-1-12 ,系统自动将月份中0...下面的几个函数可以轻松搞定。。。。。。将一个一位数字前面加零function FillZero(str) ttt=str if len(str)=1 then ttt="0" & str end if F
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0102 使用DivMod函数返回两操作数相除商和余数 68 0103 使用Power函数返回底数任何次幂 69 0104 使用Round函数将实数四舍五入为整数 69 0105 使用Sqr函数计算指定数平方 70 0106 使用Mean函数计算...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

去掉前面几个字的函数