今天同事遇到一个问题,在Excel中,同一个单元格内写的有数字,有汉字混在一起,有什么办法快速求和?
乍一看也没什么规律可循,仔细分析,基本上都是用空格隔开了每组数据,第一反应就是分列,然后删除不要的数据部分,剩下的求和,如果数据少,这样做无可厚非,那要是几百行几千行呢?这儿微软Office365新提供的函数textsplit能快速解决问题。
首先我们来看一下TextSplit函数都有哪些参数,有什么作用。
微软官方定义:TEXTSPLIT 函数的工作方式与文本转列向导相同,但采用公式形式。 它允许跨列拆分或按行向下拆分。 它是 TEXTJOIN 函数的反函数。
语法
=TEXTSPLIT(text,col_delimiter,[row_delimiter],[ignore_empty], [match_mode], [pad_with])
TEXTSPLIT 函数语法具有下列参数:
text 要拆分的文本。 必需。
col_delimiter 标记跨列溢出文本的点的文本。
row_delimiter 标记向下溢出文本行的点的文本。 可选。
ignore_empty 指定 TRUE 以忽略连续分隔符。 默认为 FALSE,将创建一个空单元格。 可选。
match_mode 指定 1 以执行不区分大小写的匹配。 默认为 0,这会执行区分大小写的匹配。 可选。
pad_with 用于填充结果的值。 默认值为 #N/A。
备注:
如果存在多个分隔符,则必须使用数组常量。 例如,若要按逗号和句点拆分,请使用 =TEXTSPLIT(A1,{",","."})。
根据以上说明,我们来看看,我们的表格怎么使用。
第一步:直接使用公式:=TEXTSPLIT(B4," "),用空格分列。
第二步:去掉空值部分,在TextSplit函数中,第四个参数,ignore_empty设置为true,如果值为空将不再显示。
第三步,新得到的数据中含有 /21个等这些内容是不要的,如何去掉?我想到的办法是:再次使用TextSplit函数,用“/”作为分割符,对已得到的结果进行再次分割,但是网上和官方都没有查到这样做是否能得到正确的结果,试下(=TEXTSPLIT(TEXTSPLIT(B4," ",,TRUE),"/",,TRUE)),公式表达的意思是先用空格分列,再用斜杠对结果二次分列,得到结果如下:
这个就是想要的结果!
第四步:使用函数SUM求和,特别提醒在TEXTSPLIT函数前加两个减号(没有深究为啥,不加得到的结果是0)
=SUM(--TEXTSPLIT(TEXTSPLIT(B4," ",,TRUE),"/",,TRUE))
记得将公式拉到下面的列中,这样就得到我们想要的结果了。