首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个单元格中同时有逗号和破折号的单元格中的计数数

在一个单元格中同时有逗号和破折号的单元格中的计数数
EN

Stack Overflow用户
提问于 2022-09-09 05:10:58
回答 3查看 95关注 0票数 0

示例

在单元格"A2“中,我有2,4,5,7-9

如何使用公式或使用vba进行编码来计数?

计算为2 4 5 7 8 9,之和值为6。

和单元格"B2“中的返回值

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-09 05:30:02

假设活动工作表中的列XFD为空,且字符串中的任何整数都不会超过2^20

=SUM(COUNTIF(INDIRECT("XFD"&SUBSTITUTE(TEXTSPLIT(A2,","),"-",":XFD")),""))

对于那些没有TEXTSPLIT的人

=SUM(COUNTIF(INDIRECT(SUBSTITUTE(FILTERXML("<a><b>XFD"&SUBSTITUTE(A2,",","</b><b>XFD")&"</b></a>","//b"),"-",":XFD")),""))

票数 0
EN

Stack Overflow用户

发布于 2022-09-09 08:18:58

请试试下一个函数。它构建一个虚拟的不连续范围并计数其单元格:

代码语言:javascript
运行
复制
Function countNumb(strNo As String) As Long
    Dim arr, i As Long
    
    arr = Split(Replace(Replace(strNo, " ", ""), "-", ":"), ",")
    For i = 0 To UBound(arr)
        If Not InStr(arr(i), ":") > 0 Then
            arr(i) = arr(i) & ":" & arr(i)
        End If
    Next
    countNumb = Intersect(Range(Join(arr, ",")), Range("A:A")).cells.count
    Debug.Print Range(Join(arr, ",")).Address 'only to visually see the built range before intersection address...
End Function

它还可以处理字符串为"2,4,5,7-9“.

它可以使用下一段代码进行测试:

代码语言:javascript
运行
复制
Sub testCountNumbers()
    Dim x As String: x = "2,4,5,7-9"
    Debug.Print countNumb(x)
End Sub
票数 2
EN

Stack Overflow用户

发布于 2022-09-09 06:08:41

对VBA来说

代码语言:javascript
运行
复制
Function AddNumbers(rngTarget As Range) As Long
    Dim arrValues() As String
    Dim lngValue As Long
    Dim strValue As String
    Dim lngMinimum As Long
    Dim lngMaximum As Long

    arrValues = Split(rngTarget.Text, ",")
    
    For lngValue = LBound(arrValues) To UBound(arrValues)
    
        strValue = arrValues(lngValue)
                
        If InStr(strValue, "-") > 0 Then
        
            lngMinimum = CLng(Left(strValue, InStr(strValue, "-") - 1))
            
            lngMaximum = CLng(Replace(strValue, lngMinimum & "-", vbNullString))
        
            AddNumbers = AddNumbers + ((lngMaximum - lngMinimum) + 1)
        
        Else
        
            AddNumbers = AddNumbers + 1
        
        End If
    
    Next lngValue
        
End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73657562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档