空でないセル間の行を数える

こんにちは、私は質問に似た質問があります

1つのセルから別のセルに移動し、2つのデータ間の行数を数える

私の例では、私は列Aの空でないセル(元のデータ行自体を含む)間の行の数をカウントし、列Bにカウントを入れたいと思います

私のデータはA1から始まり、セル内の空白を使って次のデータ行まで下に移動します。

例:

A1 1        B1 3
A2          B2 4
A3          B3 2
A4 2        B4 3
A5  
A6  
A7 
A8 3  
A9  
A10 4
A11 
A12 

投稿されたオリジナルのソリューションに改造を加えようとしましたが、最後の行のカウントを取得できないようです。

どんな援助も非常に高く評価されるだろう。

1
Paul、正解として私の答えを記入してください。
追加された 著者 Jon49,

2 答え

私があなたの求めるものを手に入れたのかどうかは分かりませんが、このようなことを試してみてください:

    Private Sub CountSkips()

    Dim lStart As Long, lEnd As Long
    Dim rData As Range, rNext As Range
    Dim vData As Variant

    Set rData = ActiveSheet.Range("A1" _
                , ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp))
    vData = rData.Resize(rData.Rows.Count + 1).Value2

    Set rNext = rData.Resize(1)
    Do While rNext.Row <> Application.Rows.Count
        lStart = rNext.Row
        Set rNext = rNext.End(xlDown)
        If LenB(vData(lStart + 1, 1)) = 0 Then
            lEnd = rNext.Row
            rNext.Offset(lStart - lEnd, 1) = lEnd - lStart
        End If
    Loop

End Sub

更新:

あなたのコメントから、あなたが空白の後の項目で番号を欲しいと思ったように、それを行うためのもう1つの方法。

Private Sub CountSkips()

    Dim lStart As Long, lEnd As Long, lVeryLastRow As Long
    Dim rData As Range, rNext As Range
    Dim vData As Variant

    lVeryLastRow = Application.Rows.Count
    Set rData = ActiveSheet.Range("A1" _
                , ActiveSheet.Cells(lVeryLastRow, 1).End(xlUp))
    vData = rData.Resize(rData.Rows.Count + 1).Value2

    Set rNext = rData.Resize(1)
    Do While rNext.Row <> Application.Rows.Count
        lStart = rNext.Row
        Set rNext = rNext.End(xlDown)
        If LenB(vData(lStart + 1, 1)) = 0 And rNext.Row <> lVeryLastRow Then
            lEnd = rNext.Row
            rNext.Offset(, 1) = lEnd - lStart
        End If
    Loop

End Sub
1
追加された
適切な回答があれば、あなたの質問には解決してください。あなたはあなたの新しい質問のための新しいスレッドを開始する必要があります。
追加された 著者 Reafidy,
私はあなたのために少し変更されたコードを入れて、あなたが望むことをするべきです。
追加された 著者 Jon49,
ポール、ええ、それは新しい質問の材料です、私は今休暇中ですので、助けてはいけませんが、あなたが望むのであれば、正しい答えを記してください。
追加された 著者 Jon49,
こんにちはJon49それは最後の行まで完璧に動作します
追加された 著者 paul worthington,
こんにちはJon49それはデータを含む最後の行まで完璧に動作します。行A297 46、行A298空白または空ですが、実際の最後の行 - 列BはB297を表示する必要があります2 65239
追加された 著者 paul worthington,
こんにちはJon49あなたの伝説は、コードは本当の扱いになります。あなたの助けをありがとう。これはまだ私がプロトコルにはまだわからない最初の質問ですが、私はこのマクロのフォローアップの質問をしたいです。
追加された 著者 paul worthington,
こんにちはJon49 - 矢印キーでレコードをナビゲートするナビゲーションボタン付きのシートがあります。各レコードには可変の行があります。私は、レコードセットをナビゲートする別のマクロが必要です。例えばレコードセット1は3行を持ち、矢印を押したときに最初のレコードとなり、次に表示するレコードセットは4行のRecordset2となります。あなたがアドバイスを提供できるなら、私は永遠に感謝しています。私はこれを行うフォームを持っていますが、私はアクティビティシートを使用することに変わり、その後楽しいものが始まりました。ナビゲーションコントロールとシート1を参照しようとすると、シート1にすべてのデータが含まれます。乾杯
追加された 著者 paul worthington,
こんにちはJon49、私はあなたの答えを正しいものとしてマークしました。
追加された 著者 paul worthington,

wsworkcenter--> workbook object name

WsWorkCenter.Activate
'counting non empty rows , will store count  in the variable mlProjectCount
Cells(2, 1).Select
Selection.End(xlDown).Select    
mlProjectCount = ActiveCell.Row
0
追加された