Office: (Office 2013) Maximalwert aus einer Array-Spalte auslesen

Helfe beim Thema Maximalwert aus einer Array-Spalte auslesen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Faultier, Sind alle Worksheetfunction. bzw. Application. Functionen langsamer als Schleifen das wär doch mal eine tolle Aufgabe für Dich!... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Faultier_1982, 21. März 2015.

  1. Maximalwert aus einer Array-Spalte auslesen


    Hallo Faultier,

    das wär doch mal eine tolle Aufgabe für Dich! Finde es heraus und poste Deinen Testaufbau sowie die Ergebnisse. Da kannst Du mal was an die Gemeinschaft zurückgeben, die Dir schon so oft geholfen hat.

    Wo war denn nun Dein Problem mit der Summe? Oder besteht es noch? Dann wäre die Beantwortung meiner Rückfrage sicher nicht schlecht. Oder ist die Frage nicht mehr von Interesse? Na, egal. Ich hake das für mich erstmal als "erledigt" ab.

    Grüße
    EarlFred
     
    EarlFred, 24. März 2015
    #16
  2. Hallo EarlFred,

    Ich hoffe hier niemand verärgert zu haben...

    Ich vermute, dass es daran liegt, dass mein Array mit der Schleife bei Zeile 0 beginnt. Wenn ich nämlich ein Array so fülle

    Array = ThisWorkbook.Sheets("Tabelle1").Range(Tabelle1.Cells(1, 3), Tabelle1.Cells(1000, 4)).Value

    beginnt das Array, meines Wissens, erst mit Zeile 1 und dann gab es keine Probleme bei der Summenrechnung. Aber durch deinen Hinweis, dass es mit Schleifen schneller geht, habe ich das in einer Schleife gelöst.


    Gruß Faultier
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Faultier_1982, 24. März 2015
    #17
  3. ... Dann hilft direkt unter Option Explicit die Zeile Code:
    dann fängt jedes Array mit 1 an.
     
  4. Maximalwert aus einer Array-Spalte auslesen

    Hallo Faultier,

    kannst du mir verraten warum du mit Arrays arbeitest?

    Zu mal Application.WorksheetFunction.CountIf auf Arrays nicht angewendet werden kann.
     
  5. Hier ein anderer Ansatz:

    Code:
     
  6. Beverly
    Beverly Erfahrener User
    Hi,

    das Problem liegt gewiss nicht daran, dass das Array bei 0 beginnt, denn Sum, Average, Min und Max lassen sich auch mit solchen Arrays problemlos ermitteln

    Code:
    Maximalwert aus einer Array-Spalte auslesen grusz.gif
     
    Beverly, 24. März 2015
    #21
  7. Die meisten Application.WorksheetFunction. habe ich auf Zellenbereiche und nicht Array's angewendet. Ich Bin gerade dabei, auf Array's umzustellen, um zu testen, ob mir das in der Performance hilft.


    Ja, nach genauerer Prüfung bin ich auf den gleichen Schluss gekommen. Ich habe noch geprüft, ob in den Array an dieser stelle des Code auch etwas drin ist und es ließ sich problemlos Werte ausgeben.

    Dem Ansatz kann ich noch nicht ganz folgen
    wird daraus
    Code:
    dann nicht auch "nur" eine WorksheetFunction??

    Gruß
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Faultier_1982, 24. März 2015
    #22
  8. Maximalwert aus einer Array-Spalte auslesen

    Nochmals, die Verwendung von Arrays mit Excelfunktionen erzeugt
    genau das Gegenteil: Performance-Senkung!

    Arbeite mit Zell-Bereichen!

    Siehe Datei.
     
  9. Hallo Gruß,

    das sind aber nun vollkommen andere Randbedingungen und Wünsche als im Eröffnungsthread.... Es wäre schön, wenn man von Anfang an wüsste, worum es Dir geht, damit man sich nicht sinnlos im Kreis dreht.

    Teste halt einfach selbst (ich weiß, Timer ist nicht sonderlich genau, aber für diese Zwecke reicht es vollkommen):
    Code:
    [Edit]
    Seh ich grad erst: in xlphs Datei ist ja eine schöne Gegenüberstellung enthalten.

    Grüße
    EarlFred
     
    EarlFred, 24. März 2015
    #24
  10. Hallo EarlFred,

    dein Bespiel bezieht sich lediglich auf eine Spalte, somit ist die
    WSF-Methode sogar schneller als die Array-Methode.

    Das ändert sich erheblich bei einem 2Dim-Array mit mehreren Spalten,
    da mit Index() der Spaltenvektor erst aus dem 2Dim-Array extrahiert werden muss,
    was nicht unerheblich Zeit in Anspruch nimmt.

    Code:
     
  11. Hi xlph,

    stimmt, das war bewusst so gewählt. Da das "Extrahieren" einer Spalte mittels Index viel zu langsam ist, um über einen Einsatz in performanceoptimierter Umgebung überhaupt nachzudenken (siehe Beitrag #12), hatte ich dies hier bereits außen vor gelassen.

    Bei meinem einspaltigen Beispiel sind die Varianten "testArray1" und "testArray2" auf meinem System recht genau gleich schnell.
    Bei mehrspaltigen Datenfeldern steigt die Rechenzeit bei "testArray1" massiv an, bei "testArray2" bleibt sich konstant.
    (soweit auch nicht unerwartet)

    Insofern wäre meine Schlussfolgerung sowohl bei ein- als auch mehrspaltigen Datenfeldern: Berechne die Summe mittels Schleife über das Datenfeld. Der Einfluss, ob das Datenfeld eine oder mehrere Spalten hat, spielt keine messbare Rolle. Das Extrahieren in ein separates Datenfeld kann dabei ebenfalls entfallen, was zusätzlich Zeit kosten würde und keinen Nutzen bringt.

    Liegen die Daten allerdings in einem Tabellenblatt (Variante "TestRange"), ist das Berechnen ebendort zu bevorzugen.

    Passt das mit Deinen Beobachtungen?

    Alle Aussagen mögen bitte unter Beachtung der Randbedingungen und Auswirkungen im Gesamtkontext gesehen werden. Wenn ich nur eine einzige Berechnung durchführe, wäre mir das vermutlich egal, ob diese 0,0015 oder 0,0014 Sekunden dauert, vor allem, wenn ich dafür die 10fache Menge an Code produzieren müsste.

    Grüße
    EarlFred
     
    EarlFred, 24. März 2015
    #26
  12. Hallo,

    klar es kommt immer auf die Datenmenge an.

    Fazit:
    Werden Excelfunktionen in VBA verwendet, dann sollte mit Zell-Bereichen
    gearbeitet werden, wenn möglich.

    Vorteile gegenüber Array-Verarbeitung:
    -Kein Limit (Array auf 2^16 (65536) Elemente begrenzt).
    -schneller (Array muss erst noch erzeugt werden und Vektor-Extrahierung ist zeitaufwendig)
    -kürzerer Code
     
  13. Maximalwert aus einer Array-Spalte auslesen

    Hallo xlph,

    die Größe eines Datenfelds wird allerdings m. W. nur durch den zur Verfügung stehenden Speicher begrenzt.
    Oder meintest Du etwas anderes?

    Grüße
    EarlFred
     
    EarlFred, 25. März 2015
    #28
  14. Nein, Arrays bezogen auf WorksheetFunction.

    Teste folgendes:
    Code:
     
  15. \@xlph.

    nicht notwendig, in diesem Zusammenhang ist es klar - dennoch danke für das Beispiel!

    Ich dachte Du beziehst Dich auf eine rein vba-interne Verarbeitung ohne Worksheetfunctions - aber irgendwie hatte ich Deinen Beitrag falsch gelesen. Jetzt dämmert's mir *wink.gif*

    Grüße
    EarlFred
     
    EarlFred, 25. März 2015
    #30
Thema:

Maximalwert aus einer Array-Spalte auslesen

Die Seite wird geladen...
  1. Maximalwert aus einer Array-Spalte auslesen - Similar Threads - Maximalwert Array Spalte

  2. Errechnung einer zeitlichen Differenz mit einem Maximalwert im Ergebnis

    in Microsoft Excel Hilfe
    Errechnung einer zeitlichen Differenz mit einem Maximalwert im Ergebnis: Hallo zusammen ... Ich benötige mal Hilfe bei der Erstellung einer Formel, in der Hoffnung dass diese so überhaupt möglich ist ... Ich habe zwei Zeitangaben und errechne hierzu die Differenz, das...
  3. Datensätze mit mehreren % Inhalten - Maximalwert ermitteln

    in Microsoft Access Hilfe
    Datensätze mit mehreren % Inhalten - Maximalwert ermitteln: Hallo, aus folgenden einfacher Access-Tabelle: ID|Name|Linie|Prozent 5000|Ware1|Minaral|16% 5000|Ware1|Pharma|64% 5000|Ware1|Logistik|20% 5002|Ware2|Minaral|40% 5002|Ware2|Pharma|20%...
  4. Mit Abfragen Werte bis maximalen Wert erstellen

    in Microsoft Access Hilfe
    Mit Abfragen Werte bis maximalen Wert erstellen: Hallo, kann ich in Access mit einer (oder mehreren) Auswahlabfragen aus der Inputtabelle die Ergebnistabelle mit Werten bis zum Maximalwert generieren? Inputtabelle: IDNr | Maximalwert 1000 | 1...
  5. Mit Abfragen Werte bis maximalen Wert erstellen

    in Microsoft Excel Hilfe
    Mit Abfragen Werte bis maximalen Wert erstellen: Hallo, kann ich in Access mit einer (oder mehreren) Auswahlabfragen aus der Inputtabelle die Ergebnistabelle mit Werten bis zum Maximalwert generieren? Inputtabelle: IDNr | Maximalwert 1000 | 1...
  6. Max- Min- Mittelwert pro Tag

    in Microsoft Excel Hilfe
    Max- Min- Mittelwert pro Tag: Hallo, Ich habe eine ca. 145000 Zeilen lange Tabelle mit Temperaturwerten und dem jeweiligen Messtag. (Eine Temperaturmessung alle 15 Minuten über 8,5 Jahre) Nun möchte ich diese Daten auf den...
  7. Maximalwert, wenn Datum grösser oder kleiner als

    in Microsoft Excel Hilfe
    Maximalwert, wenn Datum grösser oder kleiner als: Hallo Zusammen Ich habe eine Tabelle mit einer Rubrik (Fall A-C), Datum und Werten. Ich möchte nun den Maximalwert ermittlen, wenn das Datum grösser ist als E2 und kleiner als F2 und der Fall in...
  8. Suche Maximalwert und gebe mir Überschrift zurück

    in Microsoft Excel Hilfe
    Suche Maximalwert und gebe mir Überschrift zurück: Guten Tag Ich suche in einer Spalte den Maximalwert und will mir die Überschrift ermitteln =INDEX($R$8:$KG$8;VERGLEICH(MAX(R11:KG11);R11:KG11;0)) Mein Problem die Überschriften stehen in...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden