Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen und Übertragen zwischen Tabellenblättern.

Suchen und Übertragen zwischen Tabellenblättern.
08.08.2019 12:41:19
Jonas
Hallo zusammen.
Leider verzweifle ich zur Zeit an diesem scheinbar einfachen Problem:
Ich übertrage täglich neue Meldungen, die jeweils einen Code von 0001 bis 0013 haben von einem Tabellenblatt in ein anderes. Würde dies gerne über VBA vereinfachen.

Ausgangssituation:

Datei wird aus SAP nach Tabellenblatt „Import“ importiert, VBA löscht mir die unnötigen Spalten und übrig bleibt „Meldung“ in Spalte A und der zugehörige „Code“ in Spalte B. (Funktioniert)
Im Tabellenblatt „Übersicht“ befinden sich in Zeile 2 die Codes von 0001 bis 0013 und darunter die jeweiligen Meldungen aus den Tagen davor.
Was ich tun möchte:
Checke ob Meldung aus „Import“ in „Übersicht“ schon vorhanden ist.
Beginne ab neuer Meldung (Meldung unterhalb der am Vortag zuletzt übertragenen)
Suche Code aus Tabellenblatt „Import“ Spalte B in Tabellenblatt „Übersicht“ Zeile 2.
Gehe bis zum Ende der gefundenen Spalte und übertrage die Meldungsnummer aus Spalte A Tabellenblatt „Import“ ans Ende der gefundenen Spalte im Tabellenblatt „Übersicht“.
Meine Beispieldatei macht leider Probleme beim Hochladen, werde dies gegen später nochmal versuchen.
Vielen Dank für jede Hilfe.
Freundliche Grüße
Jonas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen und Übertragen zwischen Tabellenblättern.
08.08.2019 15:39:46
Jens
Moin Jonas,
kannst Du mal ein Beispiel für eine Meldung geben?
Wie ist eine Meldung des Vortags erkennbar, Du schreibst nichts von einer Datumsspalte?
Wenn eine Meldung 'ABC' den Code 10 hat, würde dann unter '10' in der Übersicht irgendwann lediglich x mal ABC untereinander stehen?
Gruß,
Jens
Suchen und Übertragen zwischen Tabellenblättern.
09.08.2019 07:34:06
Jonas
Moin Jens,
Die Meldungen sind fortlaufende Zahlen, also z.B. 1000, 1001, 1002, 1003 usw.
Es muss somit lediglich überprüft werden ob die Zahl schon vorhanden ist. Ab der ersten, nicht vorhandenen Meldung (hier ab 1004)soll übertragen werden.
Tabellenblatt "Import":
Meld. Code
1000 0002
1001 0004
1002 0001
1003 0003
1004 0005
1005 0001
Tabellenblatt "Übersicht":
0001 0002 0003 0004 0005
1002 1000 1003 1001
Hoffe so ist es nachvollziehbar.
Die Meldungen 1000 bis 1003 sind bereits vorhanden. Es sollen in dem Beispiel also nur noch 1004 und 1005 in die richtige Spalte, ans jeweilige Ende einsortiert werden.
Tabellenblatt "Übersicht" nach dem Übertragen:
0001 0002 0003 0004 0005
1002 1000 1003 1001 1004
1005
Danke dir und Gruß
Jonas
Anzeige
Suchen und Übertragen zwischen Tabellenblättern.
13.08.2019 10:31:19
Jonas
Hat noch jemand eine mögliche Lösung?
Vielen Dank für eure Hilfe
AW: Suchen und Übertragen zwischen Tabellenblättern.
13.08.2019 11:21:50
peterk
Hallo Jonas
Versuch mal
Sub test()
    Dim lastMsg As Long
    Dim lastZImp As Long
    Dim lastZOver As Long
    Dim i As Long

    Dim wsOver As Worksheet
    Dim wsImp As Worksheet
    Dim foundRange As Range

    Set wsOver = Worksheets("Übersicht")
    Set wsImp = Worksheets("Import")

    ' Suche die groesst Meldungsnummer in "Übersicht". Range muss angepasst werden 
    lastMsg = WorksheetFunction.Aggregate(4, 5, wsOver.Range("A3:Z1000"))

    ' Letzte Zeile in Import 
    lastZImp = wsImp.Cells(wsImp.Rows.Count, 1).End(xlUp).Row

    ' Die Tabelle Import auslesen und übertragen 
    For i = 1 To lastZImp
        If wsImp.Cells(i, 1).Value > lastMsg Then
            ' Nun übertragen wir 
            Set foundRange = wsOver.Rows(2).Find(wsImp.Cells(i, 2).Value, lookat:=xlWhole, LookIn:=xlValues)
            If Not foundRange Is Nothing Then
                ' wir suchen den letzetn Eintrag in dieser Spalte 
                lastZOver = wsOver.Cells(wsImp.Rows.Count, foundRange.Column).End(xlUp).Row
                wsOver.Cells(lastZOver + 1, foundRange.Column).Value = wsImp.Cells(i, 1).Value
            Else
                MsgBox "Fehlercode nicht gefunden! " & wsImp.Cells(i, 2).Value & " Zeile: " & i
            End If
        End If
        Set foundRange = Nothing
    Next i
    Set wsOver = Nothing
    Set wsImp = Nothing
    
End Sub

Anzeige
Suchen und Übertragen zwischen Tabellenblättern.
14.08.2019 14:18:41
Jonas
Das hat mir sehr weitergeholfen. Danke dir Peter!
AW: Suchen und Übertragen zwischen Tabellenblättern.
13.08.2019 11:35:05
Werner
Hallo,
Peter war schneller, aber da ich jetzt auch schon was zusammengeschrieben hatte auch noch meine Version.
Ich bin dabei davon ausgegangen, dass die Daten in der Übersicht in A2, die im Blatt Import in A1 beginnen.
Option Explicit
Public Sub aaa()
Dim i As Long, loSpalte As Long
Dim loLetzte As Long, loAnzahl As Long
Application.ScreenUpdating = False
With Worksheets("Import")
For i = 1 To .Cells(.Rows.Count, 2).End(xlUp).Row
loSpalte = .Cells(i, 2)
If WorksheetFunction.CountIf(Worksheets("Übersicht").Columns(loSpalte), _
.Cells(i, 1)) = 0 Then
With Worksheets("Übersicht")
loLetzte = .Cells(.Rows.Count, loSpalte).End(xlUp).Offset(1).Row
End With
Worksheets("Übersicht").Cells(loLetzte, loSpalte) = .Cells(i, 1)
loAnzahl = loAnzahl + 1
End If
Next i
End With
If loAnzahl > 0 Then
MsgBox "Es wurden " & loAnzahl & " Fehlercodes übertragen."
Else
MsgBox "Es gibt keine neuen Fehlercodes."
End If
End Sub
Gruß Werner
Anzeige
Suchen und Übertragen zwischen Tabellenblättern.
14.08.2019 14:29:53
Jonas
Getestet und funktioniert ebenfalls top. Hatte erst einen Laufzeitfehler 13: Typen unverträglich. Da hatte ich kurz überlesen, dass dein Code ja in A1 beginnt. Danke Werner!
Gerne u. Danke für die Rückmeldung. o.w.T.
14.08.2019 17:30:06
Werner

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige