美文网首页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