MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 13.12.2017, 12:02   #1
PhilRich
MOF User
MOF User
Standard Frage - Performance verbessern

Hallo MS-Profis,

ich würde gerne eure Meinungen und Erfahrungen zur Performance von Excel in Verbindung mit VBA-Programmierung wissen.

Ich möchte Daten aus einer Datenbank auswerten und da mir der Umgang mit Diagrammen und dem Filtern sowie nutzen von mathematischen Formeln in Excel leichter fällt exportiere ich die Daten in eine Excel-Mappe.
Damit ich die Daten variabler Auswerten kann (es werden stetig mehr) ziehe ich die Daten ein zu eins in eine Makro-Mappe und Werte diese da aus. Beim Start wird diese aktualisiert in sofern neue Daten vorliegen. Zusätzlich füge ich gleich benötige Hilfsspalten mit ein. Diesen Umweg habe ich gewählt weil ich keine Möglichkeit gefunden habe die Daten direkt in die Makro-Mappe von Access aus zu spielen.

Der ganze Startprozess dauert jetzt jedoch sehr lange und ich frage mich ob es da schneller Lösungen gibt?

Hat jmd. ähnliche Erfahrungen gemacht oder kann mir jmd. einen Tipp geben bzw. einen Ansatz zur Verbesserung?

Gruß
Phil
PhilRich ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 12:07   #2
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Phil,

Zitat:

ziehe ich die Daten ein zu eins in eine Makro-Mappe

die Daten bereits in Access vor-/aufzubereiten und nur die benötigten zu ex-/importieren wäre mein Favorit.

Zitat:

Zusätzlich füge ich gleich benötige Hilfsspalten mit ein.

Stecken in den Hilfsspalten Formeln? Sind diese in Anbetracht der zu verarbeitenden Datenmengen effizient genug geschrieben?

Zitat:

Filtern sowie nutzen von mathematischen Formeln in Excel leichter fällt

Verbessere Dein Können in Access.

Grüße
EarlFred

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 12:15   #3
Der Steuerfuzzi
MOF User
MOF User
Standard

Hallo,

vielleicht wäre das was für Dich: https://powerbi.microsoft.com/de-de/?cdn=disable
Insbesondere Power Query könnte hier für den Zugriff auf die Datenbank hilfreich sein.

Ansonsten sollte man viele Zellzugriffe vermeiden und versuchen so viele Zellen wie möglich zusammen zu verändern.

U.U. kann die Auswertung direkt aus der Datenbank über einen Datenbanktreiber (z. B. JE oder ACE) schneller sein, als das kopieren und bearbeiten in Excel.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 13:50   #4
PhilRich
Threadstarter Threadstarter
MOF User
MOF User
Standard

Vielen Dank für die schnellen Antworten.

Zitat:

die Daten bereits in Access vor-/aufzubereiten und nur die benötigten zu ex-/importieren wäre mein Favorit.

Habe ich schon zu großen Teilen gemacht. Aber das werde ich wohl noch etwas verbessern müssen was mich direkt zu

Zitat:

Verbessere Dein Können in Access.

führt.

Zu den Hilfsspalten: Die sind mit kleinen Formeln belegt, wie "=Jahr(Zelle)" oder "=Wert(Rechts(Zelle))". Diese Sachen werde ich wohl besser in Access über eine Abfrage gestalten.

@Der Steuerfuzzi: Was meinst du mit

Zitat:

Ansonsten sollte man viele Zellzugriffe vermeiden und versuchen so viele Zellen wie möglich zusammen zu verändern.

? Bzw. wie setze ich das um?
momentan sieht es bsw so aus:
Code:

 
for i=2 to maxRow
worksheet.cells(i,2).value = "Inhalt"
worksheet.cells(i,3)FormulaLocal = "Formel"
next
Wäre in dem Fall die Arbeit mit dem Range-Objekt schneller oder war etwas anderes gemeint?

Gruß Phil
PhilRich ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 13:55   #5
Der Steuerfuzzi
MOF User
MOF User
Standard

Genau! Wenn es der Inhalt und die Formel zulässt würde ich das ganze in einem Rutsch reinschreiben, z. B. so:
Code:

worksheet.Range("B2:B"&maxRow).value = "Inhalt"
worksheet.Range("C2:C"&maxRow).FormulaLocal = "Formel"

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 13:56   #6
Der Steuerfuzzi
MOF User
MOF User
Standard

Zitat: von PhilRich Beitrag anzeigen

Zu den Hilfsspalten: Die sind mit kleinen Formeln belegt, wie "=Jahr(Zelle)" oder "=Wert(Rechts(Zelle))". Diese Sachen werde ich wohl besser in Access über eine Abfrage gestalten.

Entweder über die Abfrage oder z.B. über Power Query.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 13:57   #7
Storax
MOF Koryphäe
MOF Koryphäe
Standard

http://www.cpearson.com/excel/ArraysAndRanges.aspx

__________________

This isn't a code writing service, you need to do some research and have a go at writing some of your own code.
Be careful, content may contain traces of irony.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.12.2017, 14:49   #8
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

einen Ansatz zur Verbesserung?

Wenn Daten aus einer Datenbank kommen, sollte man beachten, dass eine Datenbank nicht nur ein Sack ist, wo Daten herumliegen. Üblicherweise kann man mit der internen Technik (SQL) einen maßgeblichen Teil der Datenaufbereitung leisten, und Du willst sicher nicht eine Power eines SQL Servers mit Excelformeln nachahmen wollen ... womit sich schon mal die Frage stellt, mit welcher Datenbank man es zu tun hätte.

Ein Ansatz wäre also, die Datenbank schon arbeiten zu lassen und statt der Einzeltabellen dann eine Sicht abzurufen. Die Endaufbereitung in Excel verkürzt sich dann schon deutlich, wobei auch dort wie bereits schon genannt gilt:
- Massendatenverarbeitung geht (meistens) schneller als Einzeldatenverarbeitung (Bereich statt Einzelzellen einfach)
- Objektzugriffe mindern (Bereich in Array laden und dort verarbeiten) statt Einzelzellen abzuklappern
- Formeln dürften dann auch Einzelverarbeitungen für Zellinhalte darstellen. Wenn schon VBA, dann nicht nur inselweise.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.