Office: Zwei Arrays auf gemeinsamen Nenner bringen

Helfe beim Thema Zwei Arrays auf gemeinsamen Nenner bringen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, für ein VBA Projekt habe ich zwei Arrays, welche ich als Variant speichere. Die Arrays enthalten in der Regel exakt die gleichen Werte... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Vezax, 11. Oktober 2015.

  1. Zwei Arrays auf gemeinsamen Nenner bringen


    Hallo zusammen,

    für ein VBA Projekt habe ich zwei Arrays, welche ich als Variant speichere.
    Die Arrays enthalten in der Regel exakt die gleichen Werte - es kann aber vorkommen, dass ein Array ein Werte mehr enthält als der andere - konkret könnte so ein Beispiel aussehen:

    Arr1 = { Wert1, Wert2, Wert3 }
    Arr2 = { Wert1, Wert2, Extrawert, Wert3}

    Nun möchte ich mit einer Schleife die Arrays so ordnen, dass am Ende das kleinere Array die selben Werte enthält wie das obrige - konkret also so:

    Arr1 = { Wert1, Wert2, Extrawert, Wert3}
    Arr2 = { Wert1, Wert2, Extrawert, Wert3}

    Für den Fall, dass beide Arrays bereits gleich sind, soll nichts geschehen.
    Anhand der Länge der Arrays lässt sich leider nicht abgleichen, ob beide gleich sind - es kann nämlich auch dieser Fall entstehen, bei dem ein Element dazugekommen ist, ein anderes aber nicht mehr da ist:
    Für diesen Fall soll zuerst der untere Array den fehlenden Wert vom oberen erhalten und danach umgekehrt.
    Arr1 = { Wert1, Wert2, Wert3 }
    Arr2 = { Wert1, Wert2, Extrawert}

    Dann sollte das Ergebnis so aussehen:

    Arr1 = { Wert1, Wert2, Wert3, Extrawert }
    Arr1 = { Wert1, Wert2, Wert3, Extrawert }


    Wie genau ich das umsetzen kann, weiß ich leider nicht - aber auch grobe Vorschläge zum Algorithmus würden mir bereits helfen. *Smilie

    :)
     
  2. Hallo Vezax

    Ich hab mir mal Gedanken gemacht, und würde das so lösen :

    Rückmeldung wär nett.

    Grüße
    Code:
     
  3. Abweichende Idee: Da Arrays nicht vom Himmel fallen, sondern vorher erzeugt werden müssen: Wie passiert das? Es könnte sein, dass in der Vorsituation die Aufgabe unmittelbarer lösbar ist, sprich ohne Schleifen drehen.

    Möglicher Weg: Du schreibst die Werte in eine Tabellenspalte, beseitigst Duplikate und bildest aus dem verblieben Bereich das Array (falls notwendig).

    Zur Beseitigung von Duplikaten könnte man auch ein Dictionary einsetzen.
     
  4. Zwei Arrays auf gemeinsamen Nenner bringen

    Hallo,

    dafür wäre notwendig zu wissen, woran (oder nur "ob") man erkennen kann, dass es sich beim 3. Wert im Array um "Wert 3" oder "Extrawert" handelt?

    also ausdrücklich anders als im ersten Fall?

    Grüße
    EarlFred
     
    EarlFred, 13. Oktober 2015
    #4
  5. Hallo,

    in diese Richtung:

    PHP:
             Option Explicit

    Public Sub test()
    Dim ialngIndex1 As LongialngIndex2 As Long
    Dim strItems 
    As String
    Dim avntTemp
    () As Variant
    Dim avntArray1 
    As VariantavntArray2 As Variant
    avntArray1 
    = Array("sommer""winter""herbst")
    avntArray2 = Array("sommer""winter""frühling"'Array("sommer", "winter", "frühling","herbst") '"herbst",
    If 
    UBound(avntArray1) < UBound(avntArray2Then
    avntArray1 
    avntArray2
    ElseIf UBound(avntArray1) > UBound(avntArray2Then
    avntArray2 
    avntArray1
    Else
    avntTemp avntArray2
    For ialngIndex1 1 To UBound(avntArray1) + 1
    For ialngIndex2 1 To UBound(avntArray2) + 1
    If avntArray1(ialngIndex1 1) = avntArray2(ialngIndex2 1Then _
    Exit For
    Next
    If ialngIndex2 UBound(avntArray2) + 2 Then
    ReDim Preserve avntTemp
    (UBound(avntTemp) + 1) As Variant
    avntTemp
    (UBound(avntTemp)) = avntArray1(ialngIndex1 1)
    End If
    Next
    avntArray1 
    avntTemp
    End 
    If
    strItems strItems "avntArray1" vbCr vbCr
    For ialngIndex1 1 To UBound(avntArray1) + 1
    strItems 
    strItems avntArray1(ialngIndex1 1) & vbCr
    Next
    strItems 
    strItems vbCr "avntArray2" vbCr vbCr
    For ialngIndex1 1 To UBound(avntArray1) + 1
    strItems 
    strItems avntArray1(ialngIndex1 1) & vbCr
    Next
    Call MsgBox
    (strItems)
    End Sub
     
    Muller2, 13. Oktober 2015
    #5
  6. Danke für eure Beiträge!

    Die Werte in den Arrays von denen ich spreche sind eigentlich die Bezeichnungen von Spalten zweier Arbeitsblätter.

    Diese Spaltenbezeichnungen muss ich auf einen gemeinsamen Nenner bringen, wie oben beschrieben und dann in ein anderes Arbeitsblatt einfügen.

    Wenn es da etwas schnelleres / sinnvolleres gibt, bin ich natürlich offen dafür.

    @jack_D: Ich verwende ein zweidimensionales Array, da ich das ganze per Befehl
    Arr1 = Range("A1:A3") einlese - daher wirft dein Code leider Fehler.

    Wo ich nicht hinter den Fehler steige ist in der Zeile:
    ReDim Preserve ArrayVor(0 To Max) - bekomme da immer ein 9er Fehler, Out of bounds.

    Könntest du das evtl. nochmal anpassen? *redface.gif*

    Edit: Sorry da kamen jetzt noch Beiträge hinzu, darauf antworte ich gleich *Smilie
     
  7. \@ jack_D und mueller2

    Herzlichen Dank für den Code, das funktioniert auf den ersten Blick einwandfrei.

    Allerdings habe ich dazu mein zweidimensionales Array per Schleife in ein eindiemensionales übertragen - was sicher nicht effizient ist.

    Gibt es da eine Möglichkeit, wenn man Array = Range("A1:A2") anwendet, dass nur ein eindimensionales Array erstellt wird?

    @EarlFred: Wichtig ist nicht unbedingt, dass der 3. Wert auch Wert 3 heißt - sondern am Ende beide Arrays im jeweiligen Index den gleichen Wert besitzen - konkret kann man in dem Sinne ja nur unterscheiden, ob der Wert an der 3. Stelle bei beiden Arrays gleich ist oder nicht.

    Beantwortet das deine Frage? *frown.gif*
     
  8. Zwei Arrays auf gemeinsamen Nenner bringen

    Moin ,

    ja ich hab nur mit einem eindimensionalen Array gearbeitet. (So wie in deiner Beschreibung)

    Aber der Weg ist gezeigt ;-D

    Ansonsten kannst du das Array ja auch mit einer Schleife füllen (und nicht über den Range) dann hast du es auch eindimensional.

    Soweit mein Gedanke dazu.-


    Grüße
     
  9. Hallo Name?,

    abgesehen von der weiterhin verwirrenden, unklaren Beschreibung der Aufgabe, die eine präzise Umsetzung in Code nicht erlaubt, erachte ich einzig Eberhards, bisher in keinster Weise von Dir reflektierten Hinweis auf das Dictionary als einfachen und universell einsetzbaren Vorschlag.

    Ist das die Fortsetzung der hier schon einmal an unklarer Beschreibung gescheiterten Aufgabe?

    http://www.ms-office-forum.de/forum/...3&postcount=13

    Grüße
    EarlFred
     
    EarlFred, 13. Oktober 2015
    #9
  10. Hallo zusammen,

    ich habe versucht, meine Anforderungen so präzise wie möglich zu formulieren, bei Missverständnissen habe ich versucht auch auf Fragen eindeutig einzugehen - sorry an der Stelle falls das nicht geklappt hat.

    Gegenüber anderen Lösungen als der angestrebten bin ich sehr offen - gerade aber von Dictionaries hab ich keinen blassen Schimmer, weshalb ich entsprechend erstmal die vorgeschlagenen Lösungen implementiert habe.


    Da hast du Recht - ich habe einen zweiten Thread aufgemacht um eine explizites Problem zu besprechen, damit zukünftige User am ehesten auf das gesuchte Problem stoßen.

    Was mein allgemeines "Problem" angeht, könnte ich dazu nochmal eine ausschweifende Erklärung in einem neuen(?) Thread auflegen - eventuell ist der Kontext für die Hinweisgeber dann klarer.
    Dies habe ich noch nicht getan, weil ich eigentlich den Ansporn hatte, eine eigene Lösung zu finden, merke aber, dass ich sehr viel Hilfe benötige.

    Gäbe es hier denn einen Mod der eventuell beide Stränge zusammenführen könnte? Dann könnte ich einen neuen Eingangsbeitrag schreiben.
     
    Zuletzt von einem Moderator bearbeitet: 9. Februar 2021
Thema:

Zwei Arrays auf gemeinsamen Nenner bringen

Die Seite wird geladen...
  1. Zwei Arrays auf gemeinsamen Nenner bringen - Similar Threads - Arrays gemeinsamen Nenner

  2. Summenteilergebnis eines Arrays als Array darstellen

    in Microsoft Excel Hilfe
    Summenteilergebnis eines Arrays als Array darstellen: Hallo Community, Summenteilergebnis eines Arrays als Array darstellen. An dieser Stelle stecke ich fest. Ich habe eine Testmappe erstellt, die die Problematik versucht darzustellen. Bevor jemand...
  3. Teile eines Arrays können nicht geändert werden

    in Microsoft Excel Hilfe
    Teile eines Arrays können nicht geändert werden: HAllo ich habe mich im Forum umgesehen und einen Eintrag gefunden mit dem man in einem Array den Letzten einegegebenen Wert einer Spalte ermittelt. Jetzt habe ich die Formel von Sheet1 in Sheet2...
  4. Ergebnis aus 2 Arrays im Dritten zusammen fassen

    in Microsoft Excel Hilfe
    Ergebnis aus 2 Arrays im Dritten zusammen fassen: Moin, mal ne Frage an die VBA`ler *Smilie Kann ich die Ergebnissen aus 2 Array`s in einem weiteren Array direkt zusammen führen und damit weiter arbeiten? Im Beispiel varTmpA und varTmpA...
  5. mehrdimensionale Arrays vergleichen

    in Microsoft Excel Hilfe
    mehrdimensionale Arrays vergleichen: Hallo ich habe ein Problem und wäre um eure Hilfe sehr dankbar. Und zwar geht es darum, 2 Arrays miteinander zu vergleichen. Es handelt sich dabei um mehrdimensionale, dynamische Arrays. In...
  6. Arrays Durchlaufen

    in Microsoft Excel Hilfe
    Arrays Durchlaufen: Hallo Community, irgendwie steige ich bei Arrays nicht ganz durch... Ganz kurz erklärt: Aus einer Datenbank schreibe ich Daten in ein Array (und transfomiere es sodass Spalten-Zeilen wie in einem...
  7. Funktion ZÄHLENWENN: enthält eine Zelle einen Text einer Zelle aus einem Arrays ?

    in Microsoft Excel Hilfe
    Funktion ZÄHLENWENN: enthält eine Zelle einen Text einer Zelle aus einem Arrays ?: Hallo, ich versuche mal, mein Problem zu schildern, indem ich das Obst-Beispiel der Excel-Hilfe verwende. Ich habe in mehreren Zellen den ZÄHLENWENN-Bereich, z.B.: C1 = "Bananen" C2 = "Äpfel" C3...
  8. VBA - Aktueller / Maximaler Speicherbedarf eines Arrays per Code bestimmen

    in Microsoft Excel Hilfe
    VBA - Aktueller / Maximaler Speicherbedarf eines Arrays per Code bestimmen: Hallo, Ich arbeite in meinem aktuellen Projekt mit Arrays. Nun stellt sich mir die Frage wie groß ein Array im Speicher sein darf? Ist es möglich den maximalen Speicherbedarf eines Arrays per...
  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