如圖,A1單元格有多行數(shù)字(用Alt+Enter換行),如何求這些數(shù)的和呢?
請(qǐng)看B2的公式:
=SUMPRODUCT(--(0&TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",50)),ROW($1:$20)*50-49,50))))
套用此公式時(shí),只需要把公式中的A1換成你要求和的那個(gè)單元格即可,比如B1。
公式說明:
1.作用:對(duì)一個(gè)單元內(nèi)多行數(shù)值求和。
2.實(shí)現(xiàn)方式 :通過拆分換行符,構(gòu)建數(shù)組,再求和。
3.詳細(xì)解釋:
*CHAR(10)是原單元格中用Alt+Enter產(chǎn)生的換行符號(hào);
*REPT(" ",50)是產(chǎn)生50個(gè)空格;
*SUBSTITUTE是將某個(gè)單元格中的 舊字符 替換成新字符,因此:SUBSTITUTE(A1,CHAR(10),REPT(" ",50))這一步是把強(qiáng)制換行符號(hào)替換為50個(gè)空格;為什么是50個(gè)而不是5個(gè)呢?這是因?yàn)闉榱讼乱徊嚼肕ID函數(shù)對(duì)這個(gè)長字符進(jìn)行分段截?。拷M50個(gè)字符),如果你替換成的空格少了--比如5位--可是截取了10位,可能會(huì)導(dǎo)致一些大的數(shù)值(比如一個(gè)11位的數(shù))就會(huì)被截?cái)?,無法得出正確的結(jié)果。所以這里要替換得位數(shù)大一點(diǎn)。當(dāng)然也不需要50這么大,15位就可以了。
*接下來的MID函數(shù)是截取一段字符中的一部分,此公式是分別截取1-50位,51-100,等;
*用TRIM函數(shù)去一下兩邊的空格(因?yàn)?/span>MID截取出來的字符肯定是帶有空格的);前面再加上個(gè)0目的是萬一拆分出的內(nèi)容為空的情況下,不會(huì)在“--”(這個(gè)運(yùn)算下面解釋)時(shí)報(bào)錯(cuò)(空值轉(zhuǎn)化成數(shù)字會(huì)報(bào)錯(cuò),而數(shù)字前加0,在轉(zhuǎn)化成數(shù)字時(shí),會(huì)自動(dòng)將0去掉);
*-- 是對(duì)字串轉(zhuǎn)化成數(shù)字。先變負(fù)數(shù),再負(fù)一下就變回來了。如果字串本身就不是數(shù)字,那就轉(zhuǎn)不過去了~
*最后再用SUMPRODUCT 就是對(duì)上述的分離出的數(shù)組進(jìn)行求和,得到最終結(jié)果。