我一直在搜索幾個小時,但無法找到針對此問題的任何解決方案。包含換行符的一個單元格中的總數 - Excel
正如你可以在圖像上看到我有3列和2行。我的目標是總結成本行(它有換行符)或將設備和成本列分成3個較小的行。這可能嗎?
我一直在搜索幾個小時,但無法找到針對此問題的任何解決方案。包含換行符的一個單元格中的總數 - Excel
正如你可以在圖像上看到我有3列和2行。我的目標是總結成本行(它有換行符)或將設備和成本列分成3個較小的行。這可能嗎?
不幸的是沒有一個特別乾淨的方法來實現這一點(據我所知)。這裏有幾件事情,你可以嘗試,但:
方法1 - 工作表解決方案
如果你的第一成本細胞是在A1然後將在B1單元格光標,使用創建一個新的指定範圍以下公式:
=EVALUATE(SUBSTITUTE(A1,CHAR(10),"+"))
然後,您可以鍵入命名範圍的名稱到單元格B1中,您將得到預期的總和。不幸的是,您必須爲此創建一個命名範圍,因爲EVALUATE
不可用作工作表函數 - 只有命名範圍函數並且也可在VBA中使用。
我打電話給我的命名範圍「eval」。你可以拖動這個公式,它會填滿,總是評估它的左邊。
方法2 - VBA解決方案
你可以使用一些簡單的VBA。粘貼到一個新的模塊,然後用這個公式是這樣的工作表上:
=SumAlt(A1)
會在你的榜樣返回600,如果A1
包含在VBA您100 200 300
Function SumAlt(s As String) As Long
SumAlt = Evaluate(Replace(s, Chr(10), "+"))
End Function
當我嘗試做第一種方法是給我警報:那功能無效。第二種方法不起作用,也許是因爲我在Mac? –
@StefanMarkovic,兩者都應該在Mac上正常工作。我在第一個公式中刪除了對「Sheet1」的引用,因爲這可能不是工作表的名稱 - 現在可能再試一次 – CallumDA
像這樣的事情會工作:
Function SumLines(ByVal str As String) As Long
Dim arr() As String
arr = Split(str, Chr(10))
For a = 0 To UBound(arr)
SumLines = SumLines + CLng(arr(a))
Next
End Function
但是,只有當您沒有除數字和Chr(10)(新行)之外的任何字符時才能使用。
然後,您在您的工作表,例如:
=SumLines(A1)
這看起來很熟悉! ;)我不會返回一個整數,因爲它會在〜35k溢出 – CallumDA
你是對的!我不知道Excel中的整數是如此之小!謝謝。 –
IMO應合併部門參與行,並保持設備和成本在不同的行使用;那麼這變得微不足道。 https://superuser.com/questions/1022533/is-it-possible-to-sum-numbers-separated-with-newlines-using-a-formula – xQbert