Расширение списка Excel / диапазона - PullRequest
0 голосов
/ 04 января 2019

Как я могу сделать ниже в Excel?Пример: 6001 - 6003 8020 - 8024 Предположим, что есть сотни строк, как указано выше.Я хочу, чтобы это было написано в Excel как: 6001 6002 6003 8020 8021 8023 8024

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Специальная конкатенация

enter image description here

Код

Function SPECC(CellRange As Range) As String

    Const cStrDel1 As String = " -- "   ' Source First Delimiter
    Const cStrDel2 As String = " "      ' Source Second Delimiter
    Const cStrDel3 As String = " "      ' Target Delimiter

    Dim vnt1 As Variant     ' Source Array
    Dim vnt2 As Variant     ' Source Split Array
    Dim lng1 As Long        ' First String Value
    Dim lng2 As Long        ' Second String Value
    Dim i As Integer        ' Source Array Counter
    Dim j As Integer        ' Values Counter
    Dim strB As String      ' String Builder

    vnt1 = Split(CellRange.Cells(1, 1), cStrDel1)
    If UBound(vnt1) = 0 Then
        On Error Resume Next
        SPECC = CLng(vnt1(0))
        Exit Function
    End If
    For i = 0 To UBound(vnt1)
        If i > 0 Then
            lng1 = CLng(vnt2(1))
          Else
            lng1 = CLng(vnt1(0))
        End If
        vnt2 = Split(vnt1(i + 1), cStrDel2)
        lng2 = CLng(vnt2(0))
        If lng1 <= lng2 Then
            For j = lng1 To lng2
                GoSub BuildString
            Next
          Else
            For j = lng1 To lng2 Step -1
                GoSub BuildString
            Next
        End If
        If UBound(vnt2) = 0 Then Exit For
    Next
    SPECC = strB

Exit Function

BuildString:
    If strB <> "" Then
        strB = strB & cStrDel3 & j
      Else
        strB = j
    End If
    Return

End Function
0 голосов
/ 04 января 2019

Вы хотите объединить значения вместе ??Если так, то вот UDF, который сделает это:

Function RangeConCat(rng As Range, Separator As String) As String
Dim Cell As Range
Dim s As String
    For Each c In rng
        s = s & c.Value & Separator
    Next c
RangeConCat = Left(s, Len(s) - Len(Separator))
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...