2016-03-28 15 views
0

列 'B'に値がある場合に限り、 'A'列のすべてのセルに小数点以下の桁数を自動的に割り当てるVBAマクロを作成します。列 'B'に値を持たない行があるたびに、列 'A'は次の整数で番号を付け直す必要があります。Excelの自動インクリメント隣接するセルに基づいて

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

は非常にクールなサウンド私のバージョンですが、SOコード書き込みサービスではありません。 [ask]と[mcve]を見て、あなたが直面している*特定の*プログラミング問題に関する*具体的な*質問を策定してください。 –

+0

ごめんなさい! – DaveK

+0

'= IF(B21 <> ''、IF(B20 =" "、INT(A19)+ 1.1、A20 + 0.1)、") 'のような単純な式で行うことができます。これは単純化されており、A19:B20が空のセルでない場合は、何らかの変更が必要な場合があります。 –

答えて

1

私はこれはかなり自明であると思うが、何があなたを混乱させる場合は、最大投稿:

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

素敵なもの........ – Davesexcel

+0

それでした! 1つのセクションに10以上の行がある場合、数字を繰り返さないように少し修正しました。Do While i <= totalRows Range(typeColumn&i).Value <> "" Then count> = 9 Then baseNumber = baseNumber + 1 count = 1 範囲( "A"&i)。値= baseNumber& "。" &count Else count = count + 1 範囲( "A"&i)。値= baseNumber& "。"エルス baseNumber = baseNumber + 1 、カウント= 0 終了 場合、私= I + 1 ループ – DaveK

+0

うれしいそれはあなたのために働いている場合& エンドを数えます。 –

0

私は.Areas

を使って好き

enter image description here

はここ

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 
関連する問題