在还包含其他文本的单元格中查找值的总和
Finding the sum of values in cells that also contain other text
我有一个 Excel sheet,在一个单元格中有很多值,如下所示:
a=5
b=10
c=44
d=33
...
我想提取每个 =
字符后的值的总和。
我们该怎么做?
假设布局如 ColumnA 所示,将 ColumnA 复制到 ColumnB,将文本应用于 ColumnB 上的列,使用 =
作为分隔符,然后在 C5 中:
=SUM(C1:C4)
试试这个小 用户定义函数 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) 非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I
ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,UDF 将随之保存。
如果您使用的 Excel 版本晚于 2003,则必须保存
文件为 .xlsm 而不是 .xlsx
删除 UDF:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 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 个单元格中完成,这样您就不会达到 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)
this took awhile to work out:)
我有一个 Excel sheet,在一个单元格中有很多值,如下所示:
a=5
b=10
c=44
d=33
...
我想提取每个 =
字符后的值的总和。
我们该怎么做?
假设布局如 ColumnA 所示,将 ColumnA 复制到 ColumnB,将文本应用于 ColumnB 上的列,使用 =
作为分隔符,然后在 C5 中:
=SUM(C1:C4)
试试这个小 用户定义函数 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) 非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,UDF 将随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx
删除 UDF:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 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 个单元格中完成,这样您就不会达到 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)
this took awhile to work out:)