如何将一系列混合的文本和数字值转换为具有连续数字值求和的单个字符串?

时间:2019-03-21 19:08:53

标签: excel excel-formula

对于值:

1, 1, A, B, 2, 1, C, C, 3, D, 1, 1, 1

如何创建单个字符串:

2AB3CC3D3 (not 11AB21CC3D111)

1 个答案:

答案 0 :(得分:2)

尝试一下...

Public Function SummateAllNumbers(ByVal rngCells As Range, Optional ByVal bSplitCellContents As Boolean = False, Optional ByVal strDelimiter As String = ",") As String
    Dim rngCell As Range, arrValues() As String, lngIndex As Long, arrSplitValues() As String
    Dim i As Long, lngSummation As Long, strValue As String

    lngIndex = -1

    For Each rngCell In rngCells
        If bSplitCellContents Then
            arrSplitValues = Split(rngCell.Value, strDelimiter)
        Else
            arrSplitValues = Split(rngCell.Value)
        End If

        For i = 0 To UBound(arrSplitValues)
            lngIndex = lngIndex + 1
            ReDim Preserve arrValues(lngIndex)
            arrValues(lngIndex) = arrSplitValues(i)
        Next
    Next

    For i = 0 To UBound(arrValues)
        strValue = Trim(arrValues(i))

        If IsNumeric(arrValues(i)) Then
            lngSummation = lngSummation + strValue
        Else
            If lngSummation > 0 Then
                SummateAllNumbers = SummateAllNumbers & lngSummation
            End If

            SummateAllNumbers = SummateAllNumbers & strValue
            lngSummation = 0
        End If

        If i = UBound(arrValues) And lngSummation > 0 Then
            SummateAllNumbers = SummateAllNumbers & lngSummation
        End If
    Next
End Function

...您需要使用VBA编辑器将以上内容添加到新模块中。

您可以使用3种方式。

单个单元格分隔

Single Cell Method

您可以针对单个单元格对其进行指定,并使该函数将单元格的内容拆分为一个数组,以便识别各个元素。

范围选择

Range Selection

省略公式的一部分,该部分指定您要通过特定的定界符分割单元格的内容并选择单元格范围。

两者的组合

enter image description here

两者都可以。

如果看不到它,还有一个第3个参数可以在需要时更改定界符。

我没有得到关于值是否在不同单元格中的答案,所以我兼顾了这两个问题。

我希望它对您有用。