2016-03-28 11 views
0

"A" sütunundaki tüm hücreleri otomatik olarak tek bir ondalık basamakta numaralandıracak bir VBA makrosu oluşturmak istiyorum. 'B' sütununda bir değere sahip olmayan bir satır olduğunda, 'A' sütunu, bir sonraki tamsayıda numaralandırmayı yeniden başlatmalıdır.Bitişik hücrelere dayalı Excel Otomatik Artışı

IE:

|COLUMN A | COLUMN B| 
|:-------:|:-------:| 
| 1.1 | TEXT | 
| 1.2 | TEXT | 
| 1.3 | TEXT | 
| 1.4 | TEXT | 
| 1.5 | TEXT | 
|   | *NO TEXT* | 
| 2.1 | TEXT | 
| 2.2 | TEXT | 
| 2.3 | TEXT | 
|   | *NO TEXT* | 
| 3.1 | TEXT | 
| 3.2 | TEXT | 
| 3.3 | TEXT | 
| 3.4 | TEXT | 

enter image description here

+0

çok serin geliyor benim sürüm, ama SO kod yazma hizmeti değildir. Lütfen [sor] ve [mcve] 'ye bakın ve karşı karşıya olduğunuz bir * özel * programlama sorunuyla ilgili bir * özel * sorusu oluşturmaya çalışın. –

+0

Anlaşıldı. Afedersiniz! – DaveK

+0

Basit bir formül ile yapılabilir: = IF (B21 <> "", IF (B20 = "", INT (A19) + 1.1, A20 + 0.1), "") 'daha sonra kopyalayın. Bu basittir ve A19: B20 boş hücreler değilse bazı değişikliklere ihtiyaç duyabilir. –

cevap

1

bu yeterince açıklayıcı olduğunu düşünüyorum ama hiçbir şey seni karıştırır eğer post up: Ben .Areas kullanarak gibi

Option Explicit 

Private Sub numberCells() 

    Dim totalRows As Long 
    Dim i As Long 
    Dim baseNumber As Long 
    Dim count As Integer 

    totalRows = ActiveSheet.UsedRange.Rows.count 

    baseNumber = 1 
    i = 2 

    Do While i <= totalRows 

     If Range("B" & i).Value <> "" Then 

      count = count + 1 
      Range("A" & i).Value = baseNumber & "." & count 

     Else 

      baseNumber = baseNumber + 1 
      count = 0 

     End If 

     i = i + 1 

    Loop 

End Sub 
+0

Güzel bir ........ – Davesexcel

+0

Bunu yaptı! Tek bir bölümde 10'dan fazla satır varsa, sayıları tekrarlamamak için biraz değiştirdim: Do While i <= ToplamRows Aralık (typeColumn & i) .Value <> "" Sonra Sayılırsa say> 9 Sonra baseNumber = baseNumber + 1 sayısı = 1 Aralık ("A" & i) .Value = baseNumber & "." & sayım Else sayma = say + 1 Aralık ("A" & i) .Value = baseNumber & "." Else baseNumber = baseNumber + 1 sayısı = 0 Sonu Eğer i = i + 1 Döngü – DaveK

+0

İyi ki işe yaradıysa & End sayılır. –

0

enter image description here

İşte

Sub Do_It_Good() 
    Dim RangeArea As Range, c As Range, LstRw As Long, sh As Worksheet, Rng As Range 


    Set sh = Sheets("Sheet1") 
    With sh 
     LstRw = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 
     Set Rng = .Range("B2:B" & LstRw) 

     y = 0 

     For Each RangeArea In Rng.SpecialCells(xlCellTypeConstants, 23).Areas 
      y = y + 1 
      x = 0 

      For Each c In RangeArea.Cells 
       c.Offset(, -1) = y & "." & 1 + x 
       x = x + 1 
      Next c 

     Next RangeArea 
    End With 

End Sub 
İlgili konular