例如:
数据栏:23至26,40,22,7,27至28,49,50至51,48,136,169,190至192,17至22及无
*包括个人号码,号码范围和单词。
我在每个单独的单元格中都有如上所示的这些数据,我如何提出一个总结所有值总数的公式?
我需要对数据进行一些更新。
我目前正在使用 Jerry Beaucaire提供的公式:
=ROWS(INDIRECT(SUBSTITUTE(SUBSTITUTE(A1," - ",":")," TO ", ":")))
谢谢!
答案 0 :(得分:2)
根据JMAX's
方法
=SUM(IF(ISERR(FIND("TO",A1:A6)),ISNUMBER(A1:A6)+0,MID(A1:A6,FIND("TO",A1:A6)+2,9)-LEFT(A1:A6,FIND("TO",A1:A6)-1)+1))
通过CTRL+SHIFT+ENTER
根据您的示例假设分隔符为“TO”
修订方法:
FIND区分大小写,SEARCH不区分,因此要允许“TO”或“to”,您可以将FIND的所有实例更改为SEARCH。因此,以下版本将处理其中任何一个,空白单元格,具有“Nil”的单元格,具有诸如23,24,27(计为3)或11& 11的条目的单元格。 99(计为2)或单个数字如33的细胞(计为1)
=SUM(IF(ISERR(SEARCH("TO",A1:A6)),IF((A1:A6="Nil")+(A1:A6=""),0,LEN(A1:A6)-LEN(SUBSTITUTE(SUBSTITUTE(A1:A6,",",""),"&",""))+1),MID(A1:A6,SEARCH("TO",A1:A6)+2,9)-LEFT(A1:A6,SEARCH("TO",A1:A6)-1)+1))
修订号2
假设A1:A22中的数据
=SUM(IF(ISNUMBER(LEFT(A1:A22)+0),IF(ISNUMBER(SEARCH("to",A1:A22)),MID(A1:A22,SEARCH("TO",A1:A22)+2,9)-LEFT(A1:A22,SEARCH("TO",A1:A22)-1)+1,LEN(A1:A22)-LEN(SUBSTITUTE(SUBSTITUTE(A1:A22,",",""),"&",""))+1)))
答案 1 :(得分:0)
如果您只想使用一个单元格来计算整个结果,您可以使用此单元格(基于我的解决方案,因为INDIRECT
在那里不起作用):
=SUMPRODUCT(IF(ISERR(FIND("-",A1:A6)),
MID(A1:A6,FIND("TO",A1:A6)+2,LEN(A1:A6))*1-LEFT(A1:A6,FIND("TO",A1:A6)-1)*1+1,
MID(A1:A6,FIND("-",A1:A6)+1,LEN(A1:A6))*1-LEFT(A1:A6,FIND("-",A1:A6)-1)*1+1)
)
答案 2 :(得分:0)
如果你想要一个公式从一系列单元格中收集这些值,我会为此编写一个新的自定义函数。我就是这样做的......
如何安装用户定义的功能:
该功能已安装并可供使用。
以下是名为 USERCOUNT()*
的新功能的UDF代码Option Explicit
Function USERCOUNT(RNG As Range) As Long
Dim cell As Range, Cnt As Long, c As Long, buf As String
For Each cell In RNG
If IsNumeric(cell) And cell > 0 Then
Cnt = Cnt + 1
ElseIf InStr(1, cell, ",") > 0 Or InStr(1, cell, "&") > 0 Then
Cnt = Cnt + (Len(cell) - Len(Replace(Replace(cell, ",", ""), "&", "")) + 1)
ElseIf InStr(1, cell, " TO ") > 0 Or InStr(1, cell, " - ") > 0 Then
buf = Replace(Replace(cell, " TO ", ":"), " - ", ":")
Cnt = Cnt + Rows(buf).Rows.Count
buf = ""
End If
Next cell
USERCOUNT = Cnt
End Function
它只是在一个单元格中使用,就像引用一系列单元格的正常函数一样: