Excel, Access & Frontpage Forum

Excel Seiten : Klaus-Dieter-Homepage | Hajo's Homepage | Online-Excel | Paulchens Excel Werk. | Beverly's Excel-Inn

 

Excel, Access & Frontpage Forum » Hilfe Foren > Anwender helfen Anwendern < » Excel 2007 und folgende » For ... Next; Anzeige: Indexzähler » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen For ... Next; Anzeige: Indexzähler
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Klaus-Dieter
Administrator


images/avatars/avatar-2.gif

Dabei seit: 30.06.2005
Beiträge: 2.573

RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Werner,

mir scheint die gesamte Vergleichsoperation etwas fragwürdig. Die zu vergleichenden Werte kommen im Tabellenblatt Basis jeweils elf Mal vor, im Tabellenblatt Vergleichsdaten sogar rund zweiundzwanzig Mal. Das ergibt nach meinem Verständnis kein sauberes Ergebnis.

__________________
Viele Grüße Klaus-Dieter


Irren ist menschlich, für das richtige
Chaos braucht man einen Computer!
13.05.2012 11:09 Klaus-Dieter ist online E-Mail an Klaus-Dieter senden Homepage von Klaus-Dieter Beiträge von Klaus-Dieter suchen Nehmen Sie Klaus-Dieter in Ihre Freundesliste auf Fügen Sie Klaus-Dieter in Ihre Kontaktliste ein

Klaus-Dieter
Administrator


images/avatars/avatar-2.gif

Dabei seit: 30.06.2005
Beiträge: 2.573

RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Werner,

mit deinen Testdaten läuft das Makro in 13 Sekunden durch. Da geht aber noch mehr, weil ich bisher nur die Select-Anweisungen rausgeschmissen habe. Die richtigen Zeitsparer fehlen noch. Bitte das Ergebnis auf Richtigkeit prüfen.

Dateianhang:
unknown Mappe7 - Makro2-2.xlsm (710 KB, 5 mal heruntergeladen)


__________________
Viele Grüße Klaus-Dieter


Irren ist menschlich, für das richtige
Chaos braucht man einen Computer!
13.05.2012 10:12 Klaus-Dieter ist online E-Mail an Klaus-Dieter senden Homepage von Klaus-Dieter Beiträge von Klaus-Dieter suchen Nehmen Sie Klaus-Dieter in Ihre Freundesliste auf Fügen Sie Klaus-Dieter in Ihre Kontaktliste ein

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Klaus-Dieter,
ich wäre Dir dankbar, wenn Du mich nochmals unterstützen könntest und eine Möglichkeit siehst, das Makro zu beschleunigen.
Vielen Dank.
Werner
12.05.2012 15:22 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hier jetzt die Datei "Vergleichsdaten".

Dateianhang:
unknown Mappe7b - Kopie.xlsx (396,33 KB, 12 mal heruntergeladen)
14.04.2012 17:27 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Klaus-Dieter,
die ursprüngliche Musterdatei mußte ich aufgrund ihrer Gesamtkapazität teilen, damit noch ein gewisser Rest an Informationen übrig blieb. Darüber hinaus habe ich die Anzahl der Zeilen jeweils stark reduziert und die Formate überwiegend weggelassen. Ich hoffe, daß hat der Lesbarkeit trotzdem nicht geschadet.

Gruß
Werner

P.S.: hier die Datei "Basis"

Dateianhang:
unknown Mappe7a - Kopie.xlsx (309,15 KB, 10 mal heruntergeladen)
14.04.2012 17:26 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Klaus-Dieter,
anbei die schon angesprochene Musterdatei, die ich bis eben gerade erstellt habe. Die Ursprungsdaten für die Q4 und Q1 werden manuell in diese Datei übernommen. Es werden dann verschiedene Berechnungen durchgeführt, um eindeutige Vergleichskriterien zu erhalten, anhand derer die Zuordnung der Daten von Q1 ("Vergleichsdaten") auf die Tabelle ("Basis") [Ausgangssituation sind hier die Daten aus Q4, die in dieser Struktur unverändert beibehalten werden müssen] vorgenommen werden kann. Die Datei wird noch größer, da die Daten von Q2 und Q3 mit Q4 verglichen werden; Aufbau, Inhalt und Ablauf sind aber identisch, weshalb ich die beiden Vergleich weggelassen habe.
Vielen Dank im voraus bei den Bemühungen um Beschleunigung.

Grüße
Werner

P.S.: a) In meinem Beitrag vom 12. April muß es heißen "... If Sheets("Basis").Cells(j+1,57).Value= ..." und nicht "If Sheets("Basis").Cells(j+1,53).Value=...". b) Gerade habe ich festgestellt, daß die max. Größe der hochladbaren Datei ca. 500 KB beträgt. Meine Datei hat ca. 90.000 KB, die ich jetzt nochmals reduzieren werde. Ich hoffe, der Inforamtionsgehalt ist dann noch ausreichend.
14.04.2012 15:57 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

Klaus-Dieter
Administrator


images/avatars/avatar-2.gif

Dabei seit: 30.06.2005
Beiträge: 2.573

RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Werner,

schick mir mal so eine Musterdatei. Ich bin sicher da etwas machen zu können. Vor einiger Zeit habe ich mal ein Makro von !0 Stunden Laufzeit auf wenige Minuten reduziert.

__________________
Viele Grüße Klaus-Dieter


Irren ist menschlich, für das richtige
Chaos braucht man einen Computer!
13.04.2012 12:08 Klaus-Dieter ist online E-Mail an Klaus-Dieter senden Homepage von Klaus-Dieter Beiträge von Klaus-Dieter suchen Nehmen Sie Klaus-Dieter in Ihre Freundesliste auf Fügen Sie Klaus-Dieter in Ihre Kontaktliste ein

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Klaus-Dieter,
vielen Dank für den Hinweis, den ich heute morgen direkt umgesetzt habe. In mehreren Testläufen (bis 3000 Einheiten) hat dies, mit einer generellen Ausnahme, funktioniert: die Werte werden zwar übernommen, nicht aber im Format, wie sie in der Tabelle Vergleichsdaten vorhanden sind.
Gibt es eine Möglichkeit, das Format mitzuübertragen? Wenn nicht, würde ich ein Makro schreiben, welches die übertragenen Zeilen in das richtige Format bringt.
Auch nach Umprogrammierung dauert der Testlauf (Begrenzung in diesem Fall i=j=30000) lange; jetzt schon mehr als 3 Stunden. Ich weiß jetzt nicht, wie weit das Programm fortgeschritten ist oder ob es tatsächlich hängt; Hinweis [Keine Rückmeldung] erscheint wieder. Deshalb nochmals meine Anfrage ob es nicht eine Möglichkeit gibt, festzustellen, an welchem Punkt sich das Programm befindet.
Für weitere Optimierungshinweise in bezug auf die Programmierung wäre ich dankbar; der Programmiercode, über den der Vergleich erfolgt, ist ja schon eingestellt. Da es sich um sensible Daten eines Bekannten handelt, kann ich diese nicht nach außen geben. Falls doch notwendig, könnte ich eine Datei erstellen, die die Grundstruktur (verfremdet) wiedergibt, aber lediglich Muster-Daten enthalten würde.
Gruß
Werner
13.04.2012 11:48 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

Klaus-Dieter
Administrator


images/avatars/avatar-2.gif

Dabei seit: 30.06.2005
Beiträge: 2.573

RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Werner, einen elementaren Fehler habe ich schon mal gefunden: die Selectanweisungen. Das ist eine riesen Bremse.

Das:

Sheets("Vergleichsdaten").Select
Range(Cell(i, 60), Cells(i, 109)).Select
Selection.Copy
Sheets("Basis").Select
Cells((j + 1), 1).Select
ActiveSheet.Paste
Code eingefügt mit VBA in HTML 2.0.0.1

kannst du etwa so ersetzen:

Range(Sheets("Basis").Cells((j + 1), 1), Sheets("Basis").Cells((j + 1), 50)) = Range(Sheets("Vergleichsdaten").Cells(i, 60), Sheets("Vergleichsdaten").Cells(i, 109)).Value
Code eingefügt mit VBA in HTML 2.0.0.1

Das spart tausende von direkten Zellzugriffen, entsprechend verkürzt sich die Laufzeit. Es gäbe aber noch mehr Möglichkeiten, um die Aufzuzeiegen, müsste ich deine Datei kennen. Die Gesamtlaufzeit würde sich maximal im Minutenbereich bewegen!



__________________
Viele Grüße Klaus-Dieter


Irren ist menschlich, für das richtige
Chaos braucht man einen Computer!
12.04.2012 13:32 Klaus-Dieter ist online E-Mail an Klaus-Dieter senden Homepage von Klaus-Dieter Beiträge von Klaus-Dieter suchen Nehmen Sie Klaus-Dieter in Ihre Freundesliste auf Fügen Sie Klaus-Dieter in Ihre Kontaktliste ein

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

Themenstarter Thema begonnen von ATT
For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Klaus-Dieter,
das Programm wurde von mir mehrfach getestet und lief immer problemlos. Dies lag vielleicht lag daran, daß die Schleifen nicht mehr als 3000 Einheiten umfaßten und die zu kopierenden Daten auf die Datei Vergleichsdaten (nur in der Testphase) kopiert wurden.
Mir ist schon klar, daß bei der großen Anzahl der zu vergleichenden Daten (tatäschlich zu vergleichende Zeilen 30000 zu der Datenbasis von 120000 Zeilen) die Bearbeitungszeit schon recht groß werden kann. Um feststellen zu können, an welcher Stelle der Rechenoperation sich das Programm gerade befindet, hatte ich ein eine Darstellungsmöglichkeit gedacht, die diese Information anbietet - auch wenn das die Bearbeitungszeit weiter erhöhen sollte.
Noch nicht erwähnt hatte ich, daß während der Durchführung des Programms am oberen Rand des Bildschirm der Name der Excel-Datei mit dem Hinweis [Keine Rückmeldung] erscheint; bisher bin ich davon ausgegangen, daß dieser Hinweis den umfangreichen Rechenoperationen geschuldet war.
Das Programm lautet wie folgt:

Sub MakroVergleich
Dim i As Long
Dim j As Long

'Vergleich von Daten innerhalb zweier Tabellen; Tabellen mit Vergleichsdaten hat
'30000 Zeilen; die Basis-Tabelle (mit der verglichen wird: 120000 Zeilen)

With Sheets("Vergleichsdaten")
For i=11 To 30000
'Durchführung der Rechenoperationen nur, wenn der Wert in Zelle (i,121) größer Null

If Sheets("Vergleichsdaten").Cells(i,121).Value >0 Then

For j=11 To 120000
'Bei Übereinstimmung der Werte in beiden Tabellen sollen die Werte eines bestimmten Bereichs aus Tabelle Vergleichsdaten in die Tabelle Basis übertragen werden
If Sheets("Basis").Cells(j+1,53).Value=_
Sheets("Vergleichsdaten").Cells(i,121).Value Then

Sheets("Vergleichsdaten").Select
Range(Cell(i,60), Cells(i,109)).Select
Selection.Copy

Sheets("Basis").Select
Cells((j+1),1).Select
ActiveSheet.Paste
End If
Next j
End If
Next i
End With
Range("A6").Select
End Sub

Ich habe das Programm momentan nicht im Zugriff, so daß die die Darstellung aus dem Gedächtnis reproduziert habe; ich hoffe, die Formvorschriften habe ich eingehalten. Als Programmierer mit Anfängerkenntnissen wäre es schön sehen zu können, ob und wie sich der Ablauf des Programms beschleunigen ließe.

Dank im voraus und Gruß
Werner
12.04.2012 13:14 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

Klaus-Dieter
Administrator


images/avatars/avatar-2.gif

Dabei seit: 30.06.2005
Beiträge: 2.573

RE: For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Werner,

bei drei Stunden Laufzeit gehe ich von einem Programmierfehler aus. Darstellungen an welcher Stelle sich das Programm befindet, sind zwar möglich, bremsen den Programmlauf aber zusätzlich aus.
Am besten wäre es, wenn du die Datei hier mal einstellst, dann kann man sich das ansehen. Ich bin sicher, dass sich das deutlich beschleunigen lässt.

__________________
Viele Grüße Klaus-Dieter


Irren ist menschlich, für das richtige
Chaos braucht man einen Computer!
11.04.2012 09:03 Klaus-Dieter ist online E-Mail an Klaus-Dieter senden Homepage von Klaus-Dieter Beiträge von Klaus-Dieter suchen Nehmen Sie Klaus-Dieter in Ihre Freundesliste auf Fügen Sie Klaus-Dieter in Ihre Kontaktliste ein

ATT
Mitglied


Dabei seit: 03.08.2011
Beiträge: 21

For ... Next; Anzeige: Indexzähler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
innerhalb eines Programms werden zwei Schleifen verwendet, deren Bearbeitungsdauer, aufgrund der Datenmenge, sehr lange ist (bis zu 3 Stunden). Nun möchte ich zwischendurch wissen, an welcher Stelle der Schleife(n) sich das Programm gerade befindet. Gibt es eine solche Darstellungsmöglichkeit (z.B. MSgBox)?

Gruß
Werner
11.04.2012 07:30 ATT ist offline Beiträge von ATT suchen Nehmen Sie ATT in Ihre Freundesliste auf

Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Excel, Access & Frontpage Forum » Hilfe Foren > Anwender helfen Anwendern < » Excel 2007 und folgende » For ... Next; Anzeige: Indexzähler

Forensoftware: Burning Board 2.3.3, entwickelt von WoltLab GmbH