簡體   English   中英

組合連續數字_Excel公式或VBA

[英]Combining consecutive numbers_Excel Formula or VBA

我需要找到能夠組合連續數字的方法。 它可以是公式或 VBA 代碼,但老實說,我不知道從哪里開始,我找不到任何可以用於我的案例的類似帖子。 前任:

這個:

9630184784, 9630184786, 9630184787, 9630184788, 9630184814, 9630184815, 9630184816, 9630184817

至:

9630184784, 9630184786-9630184788, 9630184814-9630184817

提前致謝!

海拉

在此處輸入圖像描述

=MID(CONCAT(IFERROR(CHOOSE(MMULT(COUNTIF(A:A,A$1:A$8+{1,-1}),{1;3}/2)+1,",","-")&A1:A8,"")),2,99)

在此處輸入圖像描述

#Excel 2019

=MID(CONCAT(IFERROR(CHOOSE(MMULT(COUNTIF(A1,"*"&FILTERXML("<a><b>"&SUBSTITUTE(A1,","," </b><b>")&"</b></a>","a/b")+{1,-1}&"*"),{1;3}/2)+1,",","-")&FILTERXML("<a><b>"&SUBSTITUTE(A1,","," </b><b>")&"</b></a>","a/b"),"")),2,99)

#Excel 365

=LET(x,FILTERXML("<a><b>"&SUBSTITUTE(A1,","," </b><b>")&"</b></a>","a/b"),MID(CONCAT(IFERROR(CHOOSE(MMULT(COUNTIF(A1,"*"&x+{1,-1}&"*"),{1;3}/2)+1,",","-")&x,"")),2,99))

答案從象山海鮮改變。

這個 VBA function 對我來說很好用。 它是由 mikerickson 在 mrexcel 上發布的。 https://www.mrexcel.com/board/threads/convert-list-of-sequential-numbers-into-ranges.978486/

Function IntoRanges(aString As String, Optional Delimiter As String = ",") As String Dim NextBit As String Dim i As Long Dim Items As Variant Items = Split(aString, Delimiter)

IntoRanges = Items(0)
For i = 0 To UBound(Items) - 1
    If Val(Items(i)) + 1 = Val(Items(i + 1)) Then
        NextBit = "-" & Val(Items(i + 1))
    Else
        If NextBit = vbNullString Then
            IntoRanges = IntoRanges & Delimiter & Val(Items(i + 1))

        Else
            IntoRanges = IntoRanges & NextBit & Delimiter & Val(Items(i + 1))
            NextBit = vbNullString
        End If
    End If
Next i
IntoRanges = IntoRanges & NextBit

結束 Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM