返回列表 上一主題 發帖

如何找出連續的數字

如何找出連續的數字

大家好,終於熬到中學生可以發問,很感謝能有這個機會能找到會Excel的前輩幫忙

(表格詳如附件)
表格內的隨機數字已按大小由左至右排列,請問是否有函數或公式能列出每一列中連續的數字?
(例如:1,,3,4,5,9,12,13,...,能顯示號碼連續者為3,4,5還有12,13)
完整的數量大概會有幾百~2千列不等,一列列幫忙算我可能沒辦法@@

有先搜尋過往文章,但好像和我的問題不太一樣  (小弟所學甚淺,可能看過答案自己都不知道,還請前輩們見諒)

再請論壇上的大神們幫忙。再次感謝論壇維護團隊和大家能給我這個發問的機會。謝謝!

Files.zip (6.89 KB)

範例表格

本帖最後由 quickfixer 於 2021-3-29 14:50 編輯

回復 1# f00l01



   
Image 54.png
2021-3-29 14:47


笨方法
N欄要留空白
Sub test()
    Columns("O:AA").ClearContents
    For r = 1 To 10 '到第10列
    cc = 1
    ccc = 0
    For c = 2 To 14 '最後一欄+1
        If Cells(r, c) - Cells(r, c - 1) <> 1 Then
            ccc = ccc + 1
            For i = cc To c - 1
            Cells(r, ccc + 14) = Cells(r, ccc + 14) & "," & Cells(r, i) '資料從最後一欄+2開始放
            Next
            cc = c
        End If
    Next
    Next
End Sub

TOP

回復 1# f00l01


Image 55.png
2021-3-29 15:47

修正一下,只列出連續數字
    Sub test2()
    Columns("O:AA").ClearContents
    For r = 1 To 10
    cc = 1
    ccc = 0
    For c = 2 To 14
        If Cells(r, c) - Cells(r, c - 1) <> 1 Then
            s = ""
            For i = cc To c - 1
            s = s & "," & Cells(r, i)
            Next
            
            If UBound(Split(s, ",")) <> 1 Then
                ccc = ccc + 1
                Cells(r, ccc + 14) = s
            End If
            cc = c
        End If
    Next
    Next
End Sub

TOP

回復 1# f00l01


因為A1:M5裡的數字有些是文字格式,使用N(OFFSET())公式時無法抓出數字,修正為純數字如下
公式A7 =--A1
複製至 A7:M11

選擇 O7:AA7
輸入陣列公式  = IF(MMULT({1,1},IFERROR(1/((A7:M7+{-1;1}) = N(OFFSET($A7,,COLUMN(A:M)+{-2;0}))),0)),A7:M7,"")
以CTRL+SHIFT+ENTER 輸入公式

選擇 O7:AA7,下拉複製公式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

測試數字.zip (10.19 KB)

測試檔案
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 1# f00l01

試試看
Sub ex()
Dim Arr As Variant, C As Variant, X%, Y%
[A10].CurrentRegion.ClearContents   '資料放置位置,清除資料(請自行調整)
Arr = [a1].CurrentRegion
Set C = Nothing
For X = 1 To UBound(Arr)
   For Y = 1 To UBound(Arr, 2) - 1
      If Cells(X, Y) - Cells(X, Y + 1) = -1 Then  '判斷是否為連續數值
         If C Is Nothing Then
            Set C = Cells(X, Y).Resize(, 2)
         Else
            Set C = Union(C, Cells(X, Y).Resize(, 2))
         End If
      End If
   Next
   C.Copy [A10].Offset(X).Resize(, C.Count)    '資料放置位置(請自行調整)
   Set C = Nothing
Next
End Sub

TOP

回復 1# f00l01

不知道是否為樓主需求,請測試看看,謝謝。
Sub tt()
Dim Arr, Brr(), T%, T1%, L%, M%, i&, j&, C%
Columns("O:AA").ClearContents
Arr = [a1].CurrentRegion
ReDim Brr(1 To UBound(Arr), 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr)
    M = 0: L = 0: C = 0
    For j = 1 To UBound(Arr, 2)
        If j + 1 > UBound(Arr, 2) Then
            If T1 = T + 1 Then Brr(i, M) = Mid(Brr(i, M) & "," & Arr(i, j), 2)
            Exit For
        End If
        T = Arr(i, j): T1 = Arr(i, j + 1)
        If T1 = T + 1 Then
            If C = 0 Then M = M + 1
            Brr(i, M) = Brr(i, M) & "," & Arr(i, j): C = 1
        Else
            If T > L + 1 Then GoTo 99
            Brr(i, M) = Mid(Brr(i, M) & "," & Arr(i, j), 2): C = 0
        End If
        L = T
99:  Next
Next
Range("o1").Resize(UBound(Brr), UBound(Brr, 2)) = Brr
End Sub
擷取.PNG

TOP

想不到問身邊的人都解不出來的問題

來麻辣家族討論區開問一下子就跳出大神幫忙~~

感謝  quickfixer (超快!) 還有 ML089 的兩次貼文詳解

也要謝謝 jcchiang、 samwang 提供解方

我現在都來試試看,有問題再前來拜問

再一次謝謝幫忙的各層樓主和麻辣家族的團隊!

TOP

隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog[img][/img]
已收集7000篇 EXCEL函數

TOP

回復 1# f00l01

連續數字單獨個別放在單一儲存格,請測試看看,謝謝。
Sub tt1()
Dim Arr, Brr(), T%, T1%, L%, M%, i&, j&
Columns("O:AA").ClearContents
Arr = [a1].CurrentRegion
ReDim Brr(1 To UBound(Arr), 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr)
    M = 0: L = 0
    For j = 1 To UBound(Arr, 2)
        If j + 1 > UBound(Arr, 2) Then
            If T1 = T + 1 Then M = M + 1: Brr(i, M) = Arr(i, j)
            Exit For
        End If
        T = Arr(i, j): T1 = Arr(i, j + 1)
        If T1 = T + 1 Then
            M = M + 1: Brr(i, M) = Arr(i, j)
        Else
            If T > L + 1 Then GoTo 99
            M = M + 1: Brr(i, M) = Arr(i, j)
        End If
        L = T
99:  Next
Next
Range("o1").Resize(UBound(Brr), UBound(Brr, 2)) = Brr
End Sub
擷取.PNG

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題