[英]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.