Numărătoare de rânduri între celulele care nu sunt goale

Bună ziua, am o întrebare similară la întrebarea adresată

Treceți de la o celulă la alta și numărați numărul de rânduri între două date

În exemplul meu, aș dori să numărăm numărul de rânduri între celulele ne-goale (inclusiv linia de date originală în sine) din coloana A și să punem numărul în coloana B

Datele mele încep de la A1 și se mișcă în jos cu semne în celule până la următorul rând de date.

Exemplu:

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

Am încercat să fac modificări la soluția originală postată, dar eu cant par să obțină numărul ultimului rând.

Orice asistență ar fi foarte apreciată.

1
Paul, e liber să-mi marchezi răspunsul drept răspunsul corect.
adăugat autor Jon49, sursa

2 răspunsuri

Nu sunt sigur dacă obțin exact ceea ce cereți, dar încercați ceva de genul acesta:

    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

Actualizați:

Celălalt mod de a face acest lucru, din comentariul dvs. a sunat ca și cum doriți numărul de articol după gol.

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
adăugat
Marcați întrebările pe care le-ați rezolvat dacă aveți un răspuns adecvat. Ar trebui să începi un fir nou pentru noua ta întrebare.
adăugat autor Reafidy, sursa
Am pus un cod ușor schimbat pe ele pentru tine, ar trebui să faci ceea ce vrei.
adăugat autor Jon49, sursa
Paul, da, asta e materialul pentru întrebări noi, sunt în vacanță chiar acum, așa că nu pot ajuta, dar, dacă vrei, marchează răspunsul meu ca fiind corect, asta ar fi apreciat.
adăugat autor Jon49, sursa
Bună Jon49 funcționează perfect până la ultimul rând
adăugat autor paul worthington, sursa
Bună Jon49 funcționează perfect până la ultimul rând care conține date. de exemplu Row A297 46, Row A298 Blank sau Empty, dar este ultimul rând real - astfel încât coloana B ar trebui să arate B297 2 nu 65239
adăugat autor paul worthington, sursa
Bună Jon49 Omg dvs. o legendă codul funcționează un adevărat tratează. Mulțumesc foarte mult pentru ajutorul tău. Aceasta este prima intrebare pe care am cerut-o inca nu pe protocolul, dar vreau sa pun o intrebare de urmarire a acestei macrocomenzi.
adăugat autor paul worthington, sursa
Bună Jon49 - Am o foaie cu butoane de navigare care navighează înregistrări cu tastele săgeți. Fiecare înregistrare are rânduri variabile. Am nevoie de o altă macrocomandă care navighează seturile de înregistrări. de exemplu, Recordset 1 are 3 rânduri și este prima înregistrare când apăsați săgeata în jos, apoi următorul Recordset pentru a afișa este Recordset2 care are 4 rânduri. Dacă îți poți oferi orice sfat, aș fi recunoscător veșnic. Am o formulă care face acest lucru, dar am schimbat la utilizarea unui activesheet apoi distracție a început. Încercarea de a consulta fișa 3 cu comenzile de navigare și foaia 1 conține toate datele. Noroc
adăugat autor paul worthington, sursa
Bună Jon49, am marcat răspunsul dvs. ca fiind corect, multumesc pentru ajutor
adăugat autor paul worthington, sursa

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
adăugat