Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

frage zum vorgehen, zählen über mehrere pages

frage zum vorgehen, zählen über mehrere pages
12.04.2006 11:51:08
Markus
Hallo,
ich versuch mal mein Problem zu beschreiben...Hab schon mehrere Vorgehensweise versucht, aber irgendwo hakts immer..
Ich hab 1-x Pages, wobei x maximal 3..
Auf diese Pages werden Datensätze aus Textdateien die eingelesen werden verteilt
Pro Seite stehen maximal 65535 Datensätze (1 frei für Überschrift)..
Angenommen ich hab 131207 Datensätze, dann sind das
2 volle Pages und eine Page mit 137 Datensätze.
Diese Pages werden dann durch prüfroutinen gejagt und in jeder Page falsche einträge die Zelle in Spalte S mit dem Wert wrong belegt.
Diese wrongs möchte ich jetzt aufzählen, dabei möchte ich aber nicht jede Page blind sagen check bis 65536 und zähle wrong, sondern abhängig von Anzahl Datensätze..
in dem Fall wär das, gehe Page 1 und 2 ganz durch, , das wären dann 131070 Datensätze und geh dann noch 137 auf Page 3 durch.
Hab ich allerdings nur 15000 Datensätzte sollen nur 15000 Datensätze durchgegangen werden, und nicht alle möglichen 65536
Beginnen tu ich mit...
For Each ws In ActiveWorkbook.Sheets
If InStr(1, ws.Name, "XX") groesser 0 Then ' gehe nur die sheets durch, die zum file gehören (Sheets lauten hier XX, XX2, XX3
ws.Select
so zähl ich die spalten...inner schleife...
Do While i kleiner ? (verschiedene Anästze probiert mit Pageflag, usw probiert aber nichts erfolgreich
i = i + 1
cell = ws.Range("S" & i)
If cell = "wrong" Then
l = l + 1 'Variable mit Zähler für Zellen mit "wrong"
End If
loop
next ws

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: frage zum vorgehen, zählen über mehrere pages
12.04.2006 12:01:59
u_
Hallo,
nutze einfach Zählenwenn.

Sub ZaehlenWRONG()
Dim iWrong As Long, ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
If ws.Name Like "XX*" Then
iWrong = iWrong + Application.WorksheetFunction.CountIf(ws.Columns(19), "wrong")
End If
Next ws
MsgBox iWrong & " falsche Datensätze"
End Sub

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
thx aber prob mit CountIF
12.04.2006 14:50:43
Markus
hi
danke aber krieg das net zum laufen
Application.WorksheetFunction.CountIf(ws.Columns(19), "wrong")
das will bei mir nicht
gruß
Anzeige
AW: frage zum vorgehen, zählen über mehrere pages
12.04.2006 12:08:41
IngGi
Hallo Markus,
versuch's mal so:
For Each ws In ActiveWorkbook.Worksheets
If InStr(1, ws.Name, "XX") > 0 Then
For i = 1 To ws.Range("A65536").End(xlUp).Row
If ws.Range("S" & i) = "wrong" Then i = i + 1
Next 'i
End If
Next 'ws
Gruß Ingolf
danke aber problem mit leeren spalten..
12.04.2006 14:49:52
Markus
Hallo,
danke, sowas hatte ich auch schon probiert mit
ws.Range("A65536").End(xlUp).Row
aber: wenn alles belegt ist bekomme ich 1 als lösung, (kann ich aber dann abfangen)
aber: wenn im textfile wo ein leerer Datensatz ist, springt mit End(xlUp).Row darauf an,
sprich es wird dann abegrochen und nicht alles durchgegangen.
hab jetzt was gebastelt, was geht, aber absolut unperformant ist..
kann man das wie verbessern ?
x = 0 'Anzahl Gesamtdatensätze
l = 0 ' Anzahl Fehler
flag = 1 'für mich als Hilfsvariabel, damit ich weis welche Seite ich bin
info: lngZeilenCounter --- beinhaltet Anzahl datensätze die im Textfile sind
For Each ws In ActiveWorkbook.Sheets
If InStr(1, ws.Name, "XX") groesser 0 Then
i = j
If lngZeilenCounter groesser 65536 And flag = 1 Then
zeilennummer = 65536
flag = flag + 1
ElseIf lngZeilenCounter groesser 65536 And flag = 2 Then
If lngZeilenCounter - 65536 groesser 65536 Then
zeilennummer = 65536
Else
zeilennummer = lngZeilenCounter - 65536
End If
flag = flag + 1
ElseIf lngZeilenCounter groesser 65536 And flag = 3 Then
zeilennummer = lngZeilenCounter - 131070 + 1
End If
Do While i kleiner zeilennummer
i = i + 1
cell = ws.Range("S" & i)
If cell = "wrong" Then
l = l + 1
End If
x = x + 1
Loop
End If
Next ws
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige