2017-10-30 2 views
0

Ich habe eine Tabelle auf einem Blatt mit den Werten in Spalte C generiert mit den Ergebnissen einer vlookup-Anweisung aus einem Wert, den ich in Spalte A.Zellen mit Excel VBA zählen, die das Ergebnis einer vlookup-Anweisung sind

eingeben

Ich muss die Anzahl der Zellen in Spalte C bis zu einem Maximum von 51 Zeilen (von Zeile 1 bis Zeile 51) zählen können, die einen Wert in ihnen haben, ohne Fehler, nachdem ich alle meine Werte eingegeben habe in Spalte A.

Oh - übrigens, jedes Mal, wenn ich die Zählung es wird eine andere Anzahl von Zeilen verwendet werden.

Ich habe versucht mit:

ccc = Range("C:C").Cells.SpecialCells(xlCellTypeConstants).Count 

aber das zählt nur die erste Zeile, die meine Kopfzeile ist.

Tut mir leid, wenn es da draußen schon eine Antwort gibt, aber ich habe lange gesucht und kann nichts finden.

Danke.

Antwort

1

Sie können dies leicht tun, ohne VBA, aber man könnte versuchen:

sub testy() 
dim myRange as range 
dim numRows as long 

Set myRange = Range("C:C") 
numRows = Application.WorksheetFunction.CountA(myRange) - _ 
myRange.SpecialCells(xlCellTypeFormulas, xlErrors).Count 

end sub 

Ihr Code funktioniert nicht, weil xlCellTypeConstants speziell sie sagen, ist nur konstante Werte zu zählen, Formeln berechneten Werte zu ignorieren.

+0

Du hast Recht, ich habe die bearbeitet. Nun, ich habe auf diesem PC kein Excel, also könnte er vielleicht mit 'SpecialCells (xlCellTypeFormulas - xlErrors)' rechnen. Ich habe noch nie einen Subtrahierer dort versucht, nur Zusatz - vielleicht würde es funktionieren. –

+1

Das ist, was ich für Fragen auf einem Computer ohne Excel installiert ist, haha ​​beantworten. –

+0

Aber Sie werden noch 1 für den Kopf abziehen müssen (weil es in der COUNTA aufgenommen werden, aber nicht in dem Special (Ich werde meine +1 jetzt -. Der OP kann herausfinden, wie man sogar subtrahieren, wenn Sie don ‚t die Antwort bearbeiten weiter.) – YowE3K

1

Die Tabellenfunktion CountA zählt nur Zellen mit Werten:

=CountA(C1:C51) 

Wir können jede Tabellenfunktion von VBA mit der Work Funktion aufrufen können:

überspringen
dim c as integer 
c = WorksheetFunction.CountA([C1:C51]) 

CountIf verwendet werden können, um Fehler:

Skip errors with: `=COUNTIF(D5:D9,">0")` 
+0

' COUNTA' enthält Fehler – YowE3K

+0

Werte bearbeitet, danke. – ashleedawg

1

Sie suchen nach Zellen, die keine Fehler enthalten. Ersetzen Sie Ihr vlookup durch die folgende Formel. So werden alle Fehler, die durch "NOT FOUND" Text

=IFERROR(VLOOKUP(C1,A1:B3,2,FALSE), "NOT FOUND") 

Dann fügen Sie diese ersetzt werden, um die Anzahl der Zellen zu finden, die nicht leer und nicht fehlerhafte

=COUNTA(D:D) - COUNTIF(D:D,"NOT FOUND") 

Annahmen sind: -

A : B Quelle Bereich

C Nachschlagespalte

D die vlookup Funktion i s in diesem coulmn

Für VBA

cnt = Application.WorksheetFunction.CountA(D:D) - Application.WorksheetFunction.Countif(D:D, "NOT FOUND") 
Verwandte Themen