Board logo

標題: [發問] 判斷連續數字 VBA CODE 改善 請指教 [打印本頁]

作者: adrian_9832    時間: 2019-3-1 21:11     標題: 判斷連續數字 VBA CODE 改善 請指教

我的EXCEL VBA  主要用來把 0-9 的連續數字 取出  

現在的VBA CODE 比較累贅  0-9 就已經那麼多CODE了  假如0-50 那不就要50個條件了?  
自己有想過用for loop 去進行加數方式  但不太會 求指教
作者: luhpro    時間: 2019-3-2 07:51

我的EXCEL VBA  主要用來把 0-9 的連續數字 取出  

現在的VBA CODE 比較累贅  0-9 就已經那麼多CODE了   ...
adrian_9832 發表於 2019-3-1 21:11

看不懂你的例子...
為甚麼一開始 210280 與 210281 不算連續數字?
接著 21032 21033 21034 也不算連續數字?
你需要敘述的更清楚一點,
哪些情形下不能列入連續數字處理喔.

若假設只要是連續數字都列出來,
那麼可以用下式:
  1. Sub nn()
  2.   Dim lRow&, lVal&
  3.   
  4.   lRow = 1
  5.   lVal = -99999
  6.   Do While Cells(lRow, 3) <> ""
  7.     With Cells(lRow, 3)
  8.       If .Value = lVal + 1 Then
  9.         .Interior.ColorIndex = 34
  10.         .Offset(, 2) = "abc"
  11.         If .Offset(-1, 2) <> "abc" Then
  12.         .Offset(-1).Interior.ColorIndex = 34
  13.         .Offset(-1, 2) = "abc"
  14.         End If
  15.       End If
  16.        lVal = .Value
  17.     End With
  18.     lRow = lRow + 1
  19.   Loop
  20. End Sub
複製代碼

作者: adrian_9832    時間: 2019-3-2 19:55

因為問頭那個 210280 與 210281  只有0跟1   條件是要 0 ,1,2,3,4,5,6,7,8,9  當都齊 才符合條件
只是想學習一下 別人的法子是怎樣弄 謝謝  
以下是我的方法

Sub TE123ST()
Columns("e:e").Select
Selection.ClearContents
x = 1
Do Until Cells(x, 3) = ""
currentcell = Cells(x, 3)

If Right(currentcell, 1) = "0" Then
For i = 1 To 9
     nextcell = Cells(x + i, 3)
    If Val(nextcell) <> Val(currentcell) + i Then
        Exit For
    End If
   
    If Val(nextcell) = Val(currentcell) + 9 Then
        Range(Cells(x, 5), Cells(x + 9, 5)).Value = "abc"
        Range(Cells(x, 3), Cells(x + 9, 3)).Select
        With Selection.Interior
           .Pattern = xlSolid
           If abc = 34 Then
                .PatternColorIndex = xlAutomatic
                .ColorIndex = 35
               abc = 35
               Else
               .ColorIndex = 34
               abc = 34
            End If
        End With
    End If
Next i
End If
x = x + 1
Loop

End Sub
作者: adrian_9832    時間: 2019-3-2 19:57

回復 2# luhpro


    我試用你的CODE 但ERROR 顯示型態不符合
作者: 准提部林    時間: 2019-3-3 21:45

Sub Macro33()
Dim xR As Range, xH As Range, N%
[C:C].Interior.ColorIndex = 0
[E:E].ClearContents
For Each xR In Range([C1], [C65536].End(xlUp))
    If Right(xR, 1) = "0" Then Set xH = xR:  N = 0
    If xR - xH = N Then N = N + 1 Else N = 0
    If N = 10 Then
       With Range(xR, xH): .Interior.ColorIndex = 34: .Offset(, 2) = "abc": End With
    End If
Next
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)