【问题标题】:Finding the sum of values in cells that also contain other text在还包含其他文本的单元格中查找值的总和
【发布时间】:2015-06-07 18:43:08
【问题描述】:

我有一个 Excel 表格,其中一个单元格中有很多值,如下所示:

a=5  
b=10  
c=44  
d=33  
...

我想提取每个 = 字符后的值的总和。

我们该怎么做?

【问题讨论】:

  • 需要更多信息。你所有的字符串都是精确形式的:"text1=#1, text2=#2, text3=#3,..." 其中#n 是整数?

标签: excel excel-formula sum worksheet-function vba


【解决方案1】:

试试这个小用户定义函数UDF

Public Function SumInCell(s As String) As Double
    Dim s2 As String, d As Variant
    s2 = s & ","
    ary = Split(s2, "=")

    SumInCell = 0
    For i = LBound(ary) + 1 To UBound(ary)
        s2 = ary(i)
        d = CDbl(Mid(s2, 1, InStr(1, s2, ",") - 1))
        SumInCell = SumInCell + d
    Next i
End Function

例如:

用户定义函数 (UDF) 非常易于安装和使用:

  1. ALT-F11 调出 VBE 窗口
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 如上所示打开 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 中的 UDF:

=SumInCell(A1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能正常工作!

【讨论】:

    【解决方案2】:

    假设布局如 ColumnA 所示,将 ColumnA 复制到 ColumnB,将 Text 应用到 ColumnB 上的 Columns,以 = 作为分隔符,然后在 C5 中:

    =SUM(C1:C4)  
    

    【讨论】:

    • 谢谢,但我不想把它分成几列,我想保持单个单元格不变,因为它非常大,然后我需要一个很长的公式来总结所有值,我需要一些东西来对仍在该单个单元格中的值求和。
    【解决方案3】:

    对于公式答案,您需要在 2 个单元格中完成,这样您就不会达到 excel 的嵌套限制

    如果你的值在 A1 中,

    IN B1 放

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(UPPER(SUBSTITUTE(A1,"=","'")),"A",""),"B",""),"C",""),"D",""),"E",""),"F",""),"G",""),"H",""),"I",""),"J",""),"K",""),"L",""),"M",""),"N",""),"O",""),"P",""),"Q",""),"R",""),"S",""),"T",""),"U",""),"V",""),"W",""),"X",""),"Y",""),"Z","")," ","")&","
    

    在C1放

    =SUMPRODUCT(MID(B1,FIND("@",SUBSTITUTE(B1,"'","@",ROW(INDIRECT("1:"&LEN(B1)-LEN(SUBSTITUTE(B1,"'",""))))))+1,FIND("*",SUBSTITUTE(B1,",","*",ROW(INDIRECT("1:"&LEN(B1)-LEN(SUBSTITUTE(B1,",",""))))))-(FIND("@",SUBSTITUTE(B1,"'","@",ROW(INDIRECT("1:"&LEN(B1)-LEN(SUBSTITUTE(B1,"'",""))))))+1))+0)
    

    这需要一段时间才能解决:)

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2020-04-02
      • 2022-06-22
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      相关资源
      最近更新 更多