如何在一个特定的单元格的数字范围内find总数值?
例如:
数据栏:23至26,40,22,7,27至28,49,50至51,48,136,169,190至192,17至22和零
*包括个人号码,号码范围和单词。
我有如上所示的每个单元格中的这些数据,我如何拿出一个公式总结所有的数值?
我需要做一些数据更新。
我目前正在使用杰里·博凯尔提供的一个公式:
=ROWS(INDIRECT(SUBSTITUTE(SUBSTITUTE(A1," - ",":")," TO ", ":")))
谢谢!
尝试基于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。 因此,以下版本将应对这些空白单元格,具有“无”的单元格,具有诸如23,24,27(计为3)或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)))
如果你只想使用一个单元格来计算整个结果,你可以使用这个(基于我的解决scheme,因为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) )
如果你想要一个公式从单元格范围内收集这些值,我会为此写一个新的自定义函数。 我就是这么做的
如何安装用户定义的function:
- 打开你的工作簿
- 进入VB编辑器(按Alt + F11)
- 插入一个新模块(插入>模块)
- 复制并粘贴您的代码(如下所示)
- 离开VBA (按Alt + Q)
- 保存为启用macros的工作簿
该function已安装并可以使用。
这里是一个名为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
这只是简单地使用在像引用一个单元格范围的正常函数的单元格中: