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