2016-12-03 7 views
0

Ich bin ziemlich neu mit Excel VBA. Ich möchte eine VBA-Schleife erstellen, die die Anzahl der Zellen unter jeder nicht leeren Zelle zählt.Excel vba Anzahl der leeren Zellen unter jeder nicht leere Zellen

col c col d 
abc  1 
     2 
     3 
     4 
abc  5 
     6 
     7 
     8 
     9 
     10 

Hier ist, was ich versucht habe, so weit:

Sub test() 

Dim a, b, c, d, i, k As Integer 
Dim y As Range 

k = Worksheets("Sheet2").Range("d" & Rows.Count).End(xlUp).Row '13 
a = 3 
b = 3 

For i = 4 To k       
    If IsEmpty(Cells(i, 3)) = True Then   
     c = c + 1      
    Else   
     d = d + 1    
    End If  
Next 

MsgBox c 
MsgBox d 

End Sub 
+0

Ihre Frage ist nicht klar. Was ist Ihre erwartete Leistung? Erklären Sie mit Logik. – harun24hr

+0

Entschuldigung. Was ich tun möchte, ist die Anzahl der leeren Zeilen unter jeder nicht leeren Zeile. sagen wir zum Beispiel, die erste abc würde zu 3 führen, dann die zweite abc ergibt 5 – lsatienz

+0

@lsatienz tatsächlich das zweite Ergebnis wäre unendlich (oder etwas sehr hoch), da es keine Zellen am Ende der Spalte C gibt, oder? Wie würde der Code wissen, wo er für das letzte ABC stehen soll? –

Antwort

0

versuchen diese

Sub main2() 
    Dim iArea As Long 
    Dim rng As Range 

    With Worksheets("Sheet2") 
     Set rng = .Range("D4", .Cells(.Rows.count, "D").End(xlUp)).Offset(, -1) '<--| set the range of its column "C" cells corresponding to its column "D" ones from row 2 down to last not empty one 
     With rng.SpecialCells(xlCellTypeConstants) '<--| reference not empty rng cells 
      For iArea = 1 To .Areas.count - 1 
       MsgBox .Parent.Range(.Areas(iArea).Cells(1, 1), .Areas(iArea + 1).Cells(1, 1).Offset(-1)).SpecialCells(xlCellTypeBlanks).count 
      Next iArea 
      MsgBox .Parent.Range(.Areas(iArea).Cells(1, 1), rng(rng.Rows.count)).SpecialCells(xlCellTypeBlanks).count 
     End With 
    End With 
End Sub 
+0

Verdammt, du bist schnell, sogar am Samstag :) du hast die 'MsgBox' für jedes Ergebnis vergessen –

+0

@Shairado, Hi. Ich werde mit der Msgbox-Option bearbeiten. Danke – user3598756

+0

danke Benutzer3598756 große Hilfe. Ja. Ich mache msgbox darauf – lsatienz

Verwandte Themen