Werte suchen und übertragen

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Werte suchen und übertragen

    Hallo
    Ich möchte in Tabelle1 die Zeilen E2:AA70 durchsuchen und wenn in der Zeile mehr als 1 Wert steht dann kopiere die Spalten A+B der Zeile in Tabelle2 Spalte A+B und den gefundenen Wert in Spalte E der Tabelle 2 dann darunter den nächsten gefundenen Wert der dieser Zeile usw. immer mit den Spalten A+B.

    Wenn fertig mit der Zeile dann die nächste Zeile

    Beispiel:
    Das Ergebnis sollte dann in Tabelle 2 so ausehen wie Pic 2

    Vielen Dank sollte das wer schaffen, Marta

    Und schöne Feiertage
    Bilder
    • Unbenannt.JPG

      67,34 kB, 978×324, 144 mal angesehen
    • Unbenannt1.JPG

      24,87 kB, 445×191, 142 mal angesehen
    Hallo Marta und Herzlich willkommen hier im Forum.
    Nur noch einmal zur Sicherheit, damit die Aufgabenstellung korrekt verstanden wird.
    Nehmen wir als Beispiel die Zelle F3 - hier steht mehr als 1 Wert.
    Nun möchtest du die Spalten A3 und B3 der Tabelle1 in Tabelle2 an die Stelle A1 und B1 kopieren und ebenso Tabelle1!E3 nach Tabelle2! E1.
    Der nächste Wert kommt dann in Tabelle2 in die zweite Reihe.

    Was meinst du "mehr als ein Wert"? Wie sind diese Werte getrennt?
    Hallo Smurf,
    In Zelle F3 steht gar keine Wert in Tabelle 1
    In Zelle F2 steht die 2 der bleibt unberückichtigt da in dieser Zeile kein weiterer Wert steht ebenso unberücksichtigt bleibt die der Wert D10
    Also die Zeilen 2 und 10 bleiben unberückichigt.
    Auch alle anderen Zeilen die keine Werte enthalten.

    Zu berückichtigen sind nur die Zeilen 5+6+14 da hier in der Zeile mehr als 1 Wert steht. Für jede Zeile die mehr als einen Wert enthält soll in Tabelle 2 eine Zeile gebildet werden wie in Bild 2.
    Da in Zeile 5 Werte stehen 2 Zeilen in Tabelle 2 mit den Werten Da in Zeile 6 3 Werte stehen 4 Zeilen in Tabelle 2 mit den Werten.

    Die Tabelle 1 kann sich natürlich ändern, daher sollten bei eienem zweiten Aufruf die schon vorhandenen Daten überschrieben werden, NEUE aber unten angehängt werden, wenn das nich geht ist es auch nicht schlimm, dann muss ich mir mit dem weiterrechnen was anderes einfallen lassen.

    Vielen Dank
    Ah.
    Also wenn mehr als ein Wert in Tabelle1!E2:AA70 vorkommt, dann sollen diese Werte in Tabelle2 untereinander ausgegeben werden.
    Dabei soll in Tabelle2 bei diesen eingetragenen Werten immer der Wert aus Spalte A und B in Tabelle1 davorstehen und die entsprechenden Werte in Spalte E untereinander?
    Hab ichs richtig verstanden? Und welchen Sinn hat das?

    Suchst du eine Lösung mit Makro (und hast evtl. Erfahrung damit?), oder mit Formeln?
    Und könntest du die Tabelle hochladen, oder sind hier Daten drauf, die keiner sehen darf?
    Kann es vielleicht sein, dass du einfach die Werte aus vmtl. Monaten (deine Spalten E-P) umsetzen und entpivotieren willst. So das z.B. 98709 a in 1 und 2 untereinander stehen um damit z.B. einen Pivot zu gestalten (dein linkes Bild übersichtlich für die Planung, dein rechtes Bild besser zum Auswerten)? Wenn es also um das Umsetzen und Entpivotieren geht, dann empfehle ich das Boardmittel PowerQuery wenn das neben VBA auch eine alternative für dich ist. (Ggf. auch um leere Zeilen zu entfernen.)

    Werte suchen und übertragen

    Hallo
    Vorerst mal mit Danke!

    mit Pivot funktioniert das leider nicht, da die Daten dann immer zu aktualisieren sind und hier Filter zu setzten sind um nur die Daten zu erhalten die mehrfach vorkommen, mit diesen muss ich dann weiterrechnen.

    Da das auch andere verwenden müssen die von Pivot keine Ahnung haben, geht diese Lösunge leider nicht.

    MIt Formeln bin ich leider nicht weitergekommen, daher hier die Anfrage wegen VBA Makro.

    Habe hier mal ein Test Datei angehängt Tabelle 2 in GELB ist die gewünschte Lösung.

    Also VBA Makros (in einfacher Form) damit kann umgehen, anpassen und abändern versteh ich, wenn Sie geschrieben sind, schreiben selbst bei komplizierteren Sachen, geht leider nicht.

    Kenntnisse, ich kann hier die Werte der Zeilen mit INDEX Formeln aus Tabelle 1 in Tabelle 2 auslesen, und kann auch den letzten Wert bestimmen, das Problem ist das ich hier die Artikelnummer in Tabelle 2 benötige und diese eben sooft es werte in Zeile gibt.

    Und genau da komme ich mit Excel nicht weiter!!
    Das Makro soll mir eben die Artikenummer sooft in Tabelle 2 schreiben sooft Werte in der Zeile vorhanden sind.

    Danke
    Marta
    Dateien
    • Mappe1.7z

      (28,74 kB, 87 mal heruntergeladen, zuletzt: )
    Code für Tabelle 1:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub Refresh()
    3. Dim r As Long, col As Integer, ArtNr As String, Count As Long
    4. Tabelle2.Cleanup
    5. For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    6. If Not IsEmpty(Cells(r, 1)) Then
    7. ArtNr = Cells(r, 1).Value
    8. If WorksheetFunction.Count(Range("E" & r & ":AC" & r)) > 1 Then
    9. For col = 5 To 29
    10. If Val(Cells(r, col).Value) > 0 Then
    11. Count = Val(Cells(r, col).Value)
    12. Tabelle2.AddItem ArtNr, Cells(r, 2).Value, Count
    13. End If
    14. Next
    15. End If
    16. End If
    17. Next
    18. End Sub​

    Code für Tabelle2:

    Visual Basic-Quellcode

    1. ​Option Explicit
    2. Sub Cleanup()
    3. Intersect(UsedRange, Range("2:" & Rows.Count), Range("A:E")).ClearContents
    4. End Sub
    5. Property Get NextRow() As Long
    6. NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    7. End Property
    8. Sub AddItem(ByVal ArtNr As String, ByVal ArtName As String, ByVal Count As Long)
    9. Dim r As Long
    10. r = NextRow
    11. Cells(r, 1).Value = ArtNr
    12. Cells(r, 2).Value = ArtName
    13. Cells(r, 5).Value = Count
    14. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo petaod
    Vielen Vielen Dank
    Funktioniert SUPER

    Ich habe bisher immer nur Makros in Modulen verwendet, daher ist das direkt in der Tabelle Neu für mich.
    Funktioniert der CODE auch in einem Modul, oder warum nicht?

    Erklärung wäre für meine Wissen gut.
    Vielen Dank und gute Rutsch
    Marta
    Code in der Tabelle ist der objektorientierte Ansatz.
    Du erweiterst damit das Objektmodell des jeweiligen Worksheet.

    Du kannst den Code auch in ein Modul schreiben, musst aber dann jeweils dazu schreiben, auf welches Objekt sich dein Code bezieht.
    Aus Cells(r, 1).Value = ArtNr wird dann z.B. Tabelle2.Cells(r, 1).Value = ArtNr

    Wenn jedes Objekt die Dinge erledigt, die es selbst betrifft, bleibt der Code übersichtlich.
    Wenn du es in ein Modul packst, wird daraus Spaghetti-Code.

    Wenn du nur solch einfache Dinge machst, geht das noch.
    Bei größeren Projekten verlierst du ganz schnell die Übersicht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --