美文网首页Excel实战-表格公式
Excel实战:格式统一大法

Excel实战:格式统一大法

作者: 简单快捷 | 来源:发表于2023-02-02 19:25 被阅读0次

    格式一统


    时光真快,又过了十年,本期依旧实战分享。

    朋友提问:我这有一列时间数据,是按天、时、分表示的,想把它统一成分钟数,这样方便计算,咋搞?

    统一分钟数-源数据

    “这还不简单,天数*1440+时数*60+分数*1,这不就ok,小学数学啊。”

    仔细看了看源数据:这,不简单!

    可能是厉行节俭,源数据中,0天情况,直接省略了天;同理,0小时与0分钟也作了省略。

    仔细审题


    要是没省略,手动按字符分列三次,然后一乘一加,不要太简单。

    现实骨感,那就公式?以提取字符为核心,简单理了下思路,如下图:

    简单理一下思路

    理清思路后,咋一看,还挺简单,大框架才3层if函数嵌套,可能用到的函数都很常见:

    find函数,查找指定字符用;

    isnumber函数,判断是否数值;

    mid函数,提取指定字符用。

    试着写了下公式,好家伙,直接好家伙,函数一个套一个,期间还有其他问题,公式越写越长,越写越长,直接把我劝退了。

    前门不通,是时候走后门了......

    转换思路


    如果都是“xx天xx小时xx分钟”,那就好了。

    这条路好走。

    添加B-G辅助列6列,分6步走。

    辅助列B列公式

    B2公式:

    =IF(ISNUMBER(FIND("天",A2)),A2,"0天"&A2),向下填充

    翻译:找不到字符“天”,则在原值前添加字符“0天”;否则,返回原值。

    在B列基础上,同理C2公式:

    =IF(ISNUMBER(FIND("分钟",B2)),B2,B2&"0分钟"),向下填充

    在C列基础上,D2公式:

    =IF(ISNUMBER(FIND("小时",C2)),C2,SUBSTITUTE(C2,"天","天0小时")),向下填充

    翻译:找不到字符“小时”,则把字符“天”替换为“天0小时”,即加上“0小时”到合适位置;否则,返回原值。

    辅助列D列公式

    然后将天数、小时数、分钟数,统一为两位数表达。

    F2公式:

    =IF(FIND("天",D2)>2,D2,"0"&D2),向下填充

    翻译:找到字符“天”的位置大于2,说明“天”前面有两位数字,返回原值;否则说明只有一个数字,前加“0”即为“xx天”标准格式。

    辅助列F列公式

    H列公式:

    =IF(FIND("小",E2)-FIND("天",E2)>2,E2,SUBSTITUTE(E2,"天","天0")),向下填充

    翻译:找到“天”与“小”各自在字符串中位置,简单相减,即可判断小时数是否标准,然后将不标准的调整为标准格式。

    辅助列h列公式

    G列公式同理:

    =IF(FIND("分",F2)-FIND("时",F2)>2,F2,SUBSTITUTE(F2,"时","时0")),向下填充

    “xx天xx小时xx分钟”标准格式

    到这里,接下来就太简单了,后续步骤:略。

    扩展思路

    数据处理到D列时,还有另一种思路,间隔法:

    E2公式:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D2,"小时",REPT(" ",10)),"分钟",REPT(" ",10)),"天",REPT(" ",10)),向下填充

    翻译:主要是将天数、小时数、分钟数用空格字符,间隔开,方便提取数字。

    间隔法

    间隔开后,提取就简单多了。

    E2提取天数,公式:

    =--MID(E2,1,5),向下填充

    同理F2提取小时数,公式:

    =--MID(E2,11,5),向下填充

    同理G2提取分钟数,公式:

    =--MID(E2,22,5),向下填充

    翻译:略。

    提取天数公式

    结语


    也略吧......

    下期分享,我们十年后再见......

    相关文章

      网友评论

        本文标题:Excel实战:格式统一大法

        本文链接:https://www.haomeiwen.com/subject/hrkghdtx.html