Комментарии:
Hey Top Video und besten Dank. Bin gerade mit 2 For-Schleifen durchs Array(16, 127) um die Daten in ein Range-Objekt zu füllen. Also die Version von dir war noch 30-mal schneller.🤓 Wie der Schleifenlose Transfer funktioniert habe ich aber dennoch nicht ganz begriffen. 😆
ОтветитьTop! Hat mir extrem geholfen, vielen Dank!
Ich konnte den Range auch ohne ReDim an den Array übergeben. Einfach: Arr=Range.Value. Hat das Nachteile, wenn ich es so mache? Die Dimensionierung des Arrays war dadurch identisch und nicht etwa maximal oder deutlich grösser.
Naja.. natürlich kopierst du das Array in einen anderen Bereich, ansonsten würdest du deine formatierte Tabelle zerstören. Und wenn Formeln in der Tabelle stehen, werden auch diese durch die Werte ersetzt. Daher ist das lediglich nett..
ОтветитьVielen Dank für die Schritt für Schritt Erklärungen.
Mich würde interessieren wie ich für den Array-Bereich die Funktion Trim anwenden kann.
Ich habe regelmäßig Listen bei denen die Trim Funktion in Range ca. 5 s bis hin zu 3 Minuten dauert.
Wo ist mein Kommentar hin? Egal, dickes Danke für Deinen Kanal, dem ich beruflich und privat nun schon einige Zeit (ver)folge. Ohne Deine tollen Videos wären meine Projekte nicht da, so sie jetzt stehen. Deine enstpannte Didaktik und netten Nebenerklärungen, wie der Editor und Zusatzfunktionen Anwendung finden, machen den Lernprozess sehr angenehm. Nun meine Frage: im Video erklärst Du, wie man das Array neben die Ursprungstabelle platziert, was als usecase Fragezeichen hinterlässt. Wie gelingt es, im Array manipulierte Spalten passend in die Urspungsrange/Tabelle zu schreiben? ich habe mal gehört, dass Excel dann im Prinzip nur 1x rechnet und nicht wie beim Auslesen via Schleifen jedesmal Rechenlast erzeugt wird.
LG Daniel
Hey Kai, dieser Tipp mit der Range ist natürlich Gold wert wenn man ihn richtig einsetzen kann. Könntest du das ggf auch einmal zeigen, sofern es überhaupt geht, wie man genausowas in Word für nen excel sheet machen kann?
Also ich hab ne userform mit ner combobox in Word und die soll mit allen werten von einem excelsheet von der Range a1:a45 befüllt werden.
Daran hab ich mir heute 3h Zähne ausgebissen (auch ChatGPT hat’s net gelöst) und bin dann wieder beim for next loop anstatt for each loop gelandet :/
Sonst natürlich besten Dank mal wieder!🎉
Hallo Kai, das Video ist super (wie all deine Videos) kannst du nochmal erklären warum die Ausgabe des Timers mit 0,3 Sekunden als langsamer bezeichnet wird als 2,7 Sekunden. Ich bin verwirrt :) Liebe Grüße
ОтветитьHi - wieder ein supper Video. Mal ne Frage - Variant verbraucht ja mehr speicher als eine String. Wenn man das Array als String definiert, dann funktioniert aber die zeille arr = rngData.Value nicht mehr. Wenn man nun beides verbinden will (Schnelligkeit und Speicherbedarf) Wäre es dann ratsam mit arr-Variant = rngData.Value alles in die Variable zu laden und dann per Schleife in ein arr-String zu überspielen und zum schluss mit Erase arr-Variant die Variant wieder zu löschen und mit der arr-string weiter zu arbeiten. Oder würde das vom Speicher her nichts bringen weil die arr-Variant bereits einmal dimensioniert wurde?
ОтветитьKai, ein absoluter Hammerbeitrag ab sofort werde ich das Arbeiten mit Array nutzen ... vielen Dank
ОтветитьGibt es VBA Vererbung?
ОтветитьHallo, alles schön erklärt!
Aber wäre die Range -Methode nicht viel schneller, wenn man mit application.ScreenUpdating=false das Refreshen der Tabelle zur Makro-Laufzeit ausschaltet?
Vielen Dank für das tolle Video.
ОтветитьTop Video 💪🏽
ОтветитьKleiner Tipp,
Strg + h, dann ist man auch sofort beim Ersetzen 😉
Schönes Video, sehr verständlich alles!
Ich arbeite sehr viel mit Formeln/Zellenbezügen und hauptsächlich der Zielwertsuche. Diese habe ich bisher immer in meinem Makro mit Range ausgeführt. Die Daten sind mitlerweile sehr viel geworden (ca. 7000 Zeilen) und es dauert dann schonmal 10 Minuten, um alles runter zu rechnen.
Soweit ich es verstanden habe übernimmt ein Array jedoch nur die Werte, die für den Benutzer zu sehen sind und arbeitet nicht mit Formeln, da es ja Zahlenwerte sind. Gibt es trotzdem eine Möglichkeit mein Programm schneller zu machen, egal ob mit oder ohne Array? "ScreenUpdating = False" hab ich schon drin. :)
Hallo Kai, tolles Video und sehr effektiv.
Es müsste doch auch möglich sein, eine komplette Spalte einer intelligenten Tabelle über den Namen in ein Array zu schreiben, oder?
zB: ReDim arr("intelligenteTabelle[Spalte1])
Oder sieht das dann anders aus?
Sehr gutes Video zum Thema – so wie alle Deine Videos sehr sehenswert sind.
Ich selbst nutze die hier vorgestellte Technik seit jeher. Datenmanipulationen auf einem Tabellenblatt werden über den ‚Umweg‘ mit dem Array ‚rasend‘ schnell. Aber wenn die Datenmenge nur groß genug ist, wird auch Excel merklich lange beschäftigt.
In meinem Fall kopiere ich ein 2D-Array mit etwas mehr als 15.000.000 Zellen auf ein Tabellenblatt. Da rührt sich Excel einige Sekunden lang gar nicht mehr.
With ThisWorkbook.Sheets(cMESDaten)
.Range("A3").Resize(UBound(vaAusgabeArray, 1) + 1, UBound(vaAusgabeArray, 2) + 1).Value = vaAusgabeArray
End With
Hast Du vielleicht einen Tipp, wie das beschleunigt werden kann?
Gruß
Holger
Hallo Kai möchte einzelne Programme die du ins Netz gestellt hast verbinden schreibe mich an ďas ich das besser erklären kann
ОтветитьSuper,wie immer...herzlichen Dank für deine Mühe...
ОтветитьTolles Video!! Sehr informativ. Mache grad ein Fernstudium zum geprüften Programmierer und deine Videos sind eine super Ergänzung für mich zum lernen :) keep up the good work
ОтветитьSuper erklärt - Danke !
Mit (mehrspaltigen) Arrays stehe ich noch ein bisserl auf Kriegsfuß...Dein Video hat mir sehr geholfen, es besser zu verstehen
Vielen Dank! Du bist ein echter VBA-Profi. Das merkt man daran, wie gut, einfach und schnell du es mit den schwierigen Arrays erklärt hast. Viele wagen dieses Wort nicht in den Mund zu nehmen. Ich habe das Gefühl gehabt, als wärst du der Excel-Entwickler. Komm gibs zu, du arbeitest bei Microsoft ;) Spaß! Also, dankeschön nochmal:)
ОтветитьSehr schöne Demonstration. Ich habe das auch feststellen müssen bei einer umfangreicheren Aufgabe. Da habe ich fast alles auf Array-Bearbeitung umgestellt bis auf eine Sache. Da bin ich mir leider nicht sicher, ob ich das so ohne weiteres in Arrays lösen kann, aber ich werde mal schauen, ob es doch irgendwie mit meinen Kenntnissen, die ich seit dem letzten Mal, dass ich an dem Projekt gearbeitet habe, erworben habe. Knackpunkt war damals glaube ich das Sortieren der Werte im Array, aber vielleicht brauche ich das gar nicht, wenn es im Array so viel schneller geht, dass ich einfach jedes Mal alle Werte durchgehen kann anstatt nur bestimmte.
ОтветитьSuper, das kann ich gut gebrauchen :)
Eine Frage hätte ich an dich. Könntest du mal ein Video über Multithread machen? Ich weiß, VBA kann das ja nicht nativ, aber es ist über ne API anscheinend doch möglich :)
Hallo Kai,
danke dir fürs Video. Das war super erklärt!
Vor allem das Befüllen das Arrays was eine super Info für mich.
Kann es sein, dass der Datentyp Range ganz schön kompliziert ist? Ich komm mit dem Datentypen einfach nicht klar. Der Datentyp Date ist genau so schlimm finde ich ^^'.
Habe noch einen schönen Tag .).
LG
Mich würde nun der Hintergrund interessieren. Wieso ist diese Methode schneller ?
ОтветитьHallo Kai
Ich bin immer wieder auf diversen Kanelen unterwegs um mein Wissen über die VBA Thematik zu erweitern.
Die Gestaltung und Themenauswahl deiner Viedeos sind sehr ansprechen!
Gerade zu den Arrays, giebt es doch einiges zu erzählen.
Mich würde z.B interessieren wie ein befülltes Array sortiert werden kann…?
Vielen Dank nochmals für deine Videos!
Gruss Trick
Hallo Kai,
danke für deine Videos. Besonders das Thema, wie kann ich die Berechnung beschleunigen, war für mich sehr interessant. Ich konnte dies auch zum Teil umsetzen, leider habe ich aber ein Problem, welches ich bisher nicht lösen konnte. In meinem Array sind auch Formeln enthalten. Diese lassen sich aber nicht einfach in einem "Rutsch" in eine Range schreiben. Kennst du dafür eine Lösung?
Danke & Grüße
Ich dachte immer ich hab mich schone einigermaßen in die VBA Geschichte eingearbeitet.
Aber deine Videos zeigen mir das es noch viel zu lernen gibt... habe gleich geabot xD
Danke, super erklärt 👍
Du hast immer eine interessante Themenauswahl und ich lerne aus deinen Tipps jedes mal was dazu. Super!
ОтветитьDankeschön! Seitdem ich deine Lernvideos für Excel VBA gefunden habe steigt meine Lernkurve steil an. Die englischsprachigen Lernvideos und Internettipps sind doch erheblich mühsamer. Jetzt kann ich meine "Jugendsünden" in meinen Makros endlich überarbeiten und professioneller gestalten. Supi
ОтветитьHallo,
Ich hab bisher mit Arrays nur meine Listbox befüllt, und das Thema
etwas vernachlässigt. es lohnt sich wie ich sehe da etwas genauer
draufzuschauen......
Wiedermal ein Super Video thx
Hier mal ein Bsp. wie ich ein Array bis jetzt nutze:
Dim intlRow as Integer, Arr
With tbl_Daten
intiRow = .Cells(Rows.Count, 1).End(xlUp).Row
Arr = .Range(A3:C" & intlRow)
With Me.lst_Daten
.ColumnCount = 3
.ColumnWidths = "50;60;20"
.List = Arr
end With
end With
Moin sehr gut erklärt gefält mit gut vielen dank
ОтветитьSuper hilfreich!! Danke für das sehr gute Video.
Ответить