Excel Wort suchen und nebenstehende Zahl auf Tabelle 2 übertragen

  • Excel

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

    Excel Wort suchen und nebenstehende Zahl auf Tabelle 2 übertragen

    Hallo,

    ich habe folgende Frage:

    Ich habe 2 Worksheets

    Nun möchte ich das nach z.B. dem wort EXTL gesucht wird und die Zahl die daneben steht (siehe Bild) auf Tabelle 2 in die nächste freie Zeile z.B. A1 geschrieben wird.
    Dies soll aber mit allen eingetragenen Zahlen passieren die das Wort EXTL daneben stehen haben und diese müssen beispielsweise in A1, A2, A3 usw. übertragen werden.

    Ps: Die Wörter sind Variabel und die Stelle an der sie stehen ebenso

    Bitte um Hilfe :)
    Wie ist denn dein Ansatz?

    Es gibt ja in Excel den Makro Rekorder. Damit kannst du Sachen aufzeichnen und dir einen Code generieren lassen. Der Code ist selten der optimalste Weg, aber zumindest ein Ansatz. Und etwas Eigeninitiative ist immer angebracht. Poste doch danach mal den Code und dann kann man schauen was man noch dran machen kann.
    Das ist meine Signatur und sie wird wunderbar sein!
    Als Einstieg kannst du dir mal das erste Beispiel bei MSDN anschauen.
    msdn.microsoft.com/de-de/library/office/ff196143.aspx
    Das erledigt zumindest schon mal den Suchvorgang.
    Das kopieren der nebenliegenden Zelle auf ein neues Blatt kannst du in etwa so erledigen:

    Visual Basic-Quellcode

    1. c.Offset(0,1).Copy Tabelle2.Cells(Rows.Count,1).End(xlup).Offset(1)

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Mein bisheriger Code sieht so aus:

    VB.NET-Quellcode

    1. ​Sub Suche()
    2. Dim x As Integer
    3. For i = 1 To 5
    4. Dim strString As String, rngCell As Range
    5. strString = "EXTL"
    6. Set rngCell = Rows(i).Find(strString, lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True)
    7. If Not rngCell Is Nothing Then
    8. rngCell.Select
    9. ActiveCell.Offset(0, -1).Select
    10. x = ActiveCell.Value
    11. Tabelle2.Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, "A").Value = x
    12. Else
    13. End If
    14. Next
    15. End Sub


    Das problem ist das er mir jetzt nur die letzte Zahl übertragt und das auch nicht in z.B. A1
    Der grundlegende Ansatz ist schon gar nicht mal soo schlecht.
    Schau dir mal den Link aus meinem letzten Post an.
    Dort steht, wie man mit FindNext arbeitet.

    Und:

    oxDarkxo schrieb:

    rngCell.Select
    ActiveCell.Offset(0, -1).Select
    x = ActiveCell.Value
    Ist ziemlich hässlich.
    So arbeitet zwar der Macrorecorder, weil er es nicht besser weiß, dass die Userinteraktionen nicht zwingend benötigt werden.
    Das lässt sich ganz simpel auf einen Einzeiler kürzen:
    x = rngCell.Offset(0,-1).Value

    oxDarkxo schrieb:

    Tabelle2.Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, "A")
    Ist auch eine etwas komische Konstruktion.
    Oben hatte ich das so geschrieben: ​Tabelle2.Cells(Rows.Count,1).End(xlup).Offset(1)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --