Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten mit Makro übertragen

Forumthread: Daten mit Makro übertragen

Daten mit Makro übertragen
12.03.2018 09:30:25
Michael
Guten Tag Zusammen,
mangels VBA-Kenntnissen scheitere ich an folgender Aufgabe:
In einem Tabellenblatt habe ich eine zweizeilige "Datenbank" (Überschriften in Zeile 1 und die Daten in Zeile 2). Da es mehr als 50 Spalten sind, ist das "Lesen" des Datensatzes sehr umständlich.
Vor diesem Hintergrund habe ich in einem anderen Tabellenblatt in einem Bereich alle Überschriften so platziert, dass man alle Daten auf einem Bildschirmabschnitt betrachten kann.
Jetzt muss ich "nur" noch die Daten aus Zeile 2 der "Datenbank" unter die Überschriften der Übersicht transportieren.
Da Änderungen vorgenommen werden können, scheidet eine Formellösung aus. Daher müssen die Daten via Makro übertragen und zugeordnet werden.
Hier eine exemplarische (kleine) Dummy-Datei: https://www.herber.de/bbs/user/120347.xlsx
Wie kriegt man das denn hin?
Vielen Dank für Eure Hilfe!
Michael
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten mit Makro übertragen
12.03.2018 09:51:12
UweD
Hallo Michael
so?
Sub Daten_holen()
    Dim Z, TB1, C As Range, firstAddress As String
    
    Set TB1 = Sheets("Bearbeitung")
    
    For Each Z In Sheets("Daten").Range("Ausgabe")
        With TB1.Range("Bearbeitung")
        
            Set C = .Find(Z.Value, LookIn:=xlValues, LookAt:=xlWhole)
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
                    C.Offset(1, 0).Value = Z.Offset(1, 0).Value
                    Set C = .FindNext(C)
                Loop While Not C Is Nothing And C.Address <> firstAddress
            End If
        End With
    
    Next
End Sub

LG UweD
Anzeige
Danke!
12.03.2018 09:58:15
Michael
Hallo Uwe,
das funktioniert perfekt.
Jetzt versuche ich noch, das Makro zu verstehen.
Ich danke Dir ganz herzlich für Deine Bemühungen und die tolle Lösung!!
Gruß
Michael
AW: Danke!
12.03.2018 10:13:12
UweD
Hallo nochmal
    For Each Z In Sheets("Daten").Range("Ausgabe")

das Makro durchläuft jede Zelle des Bereichs Ausgabe


        With TB1.Range("Bearbeitung")
Set C = .Find(Z.Value, LookIn:=xlValues, LookAt:=xlWhole)
Im Zielbereich wird nun nach dem ersten Eintrag gesucht (in Werten /nicht in Formeln) und (der gesamte Zellinhalt wird verglichen / also NICHT WERT1 in WERT10)


                firstAddress = C.Address

Wird der Eintrag gefunden, wird die Addresse gemerkt


                Do
C.Offset(1, 0).Value = Z.Offset(1, 0).Value
Eine Zeile unter dem Fundort wird der Wert eingetragen, der eine Zeile unter dem Suchwort steht


                    Set C = .FindNext(C)
Das Suchwort wird in weiteren Zellen gesucht (und ggf auch dort dann ebenso behandelt)


                Loop While Not C Is Nothing And C.Address  firstAddress
Das geschieht so lange, bis der Erste Addresse wieder gefunden wird...


    Next
Das nächste Suchwort wird gewählt...
LG UweD
Anzeige
Prima erklärt!
12.03.2018 11:27:40
Michael
Hallo Uwe,
vielen Dank für Deine ausführlichen Erläuterungen.
Jetzt kann ich nicht nur die einzelnen Schritte nach vollziehen, es hilft mir sicherlich auch, künftig bei dem Versuch, selber kleine Routinen zu entwickeln.
Gruß
Michael
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige