Clever-Excel-Forum

Normale Version: Makro Namen finden und Daten übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ihr könnt mir bestimmt helfen.
Ich bräuchte folgendes Makro:

Ich habe eine Tabelle mit 2 Tabellenreitern.
Im ersten Reiter gibt es u.a eine Spalte mit Dateinamen und eine andere Spalte mit einem Bearbeitungsdatum. Das Namensfeld ist immer gefüllt mit einem Namen und das Datumsfeld kann entweder leer oder mit einem Datum gefüllt sein.
Im zweiten Reiter gibt es ebenfalls eine Spalte mit dem Dateinamen (Dateinamen Reiter 1 und Reiter 2 stimmen überein) und einer Spalte mit dem letzten Bearbeitungsdatum dieser Datei. In Diesem zweitem Reiter ist allerdings nur eine Auswahl an Dateinamen vorhanden, nicht alle stehen in diesem Reiter drin.

Das Makro soll jetzt aus dem Reiter 2 das Datum in Reiter 1 übertragen. Natürlich muss das Datum zum jeweils gleichen Namen übertragen werden.

Zur Verdeutlichung habe ich eine Beispieldatei angehangen.

Danke und Gruß
DeLaGhetto
Hola,

kann man doch super mit einer Formel erschlagen.
https://www.herber.de/excelformeln/src/call.pl?idx=24
Gruß,
steve1da
Hallo,

mit einer Formel möchte ich das nicht machen / bzw. habe ich gerade gelöst.
Das Problem dabei ist, dass wenn im zweiten Reiter ich die Eingaben ändere, sich automatisch auch im Reiter 1 die Daten ändern. Das möchte ich aber nicht.
Das Datum im Reiter 1 soll nur dann überschreiben oder eingefügt werden, wenn ich es will / wenn ich auf das ausführen des Makros gehe.

Nur nochmal zur Erklärung:
Reiter 1 soll eine Dokumentation sein, wann die Dateien zuletzt bearbeitet wurden.
Reiter 2 ist eine Liste mit einer Auswahl an Dateien, an denen jetzt gerade gearbeitet wird.

Ich möchte somit eine Dokumentation haben, wann eine gewisse Datei zuletzt bearbeitet wurde.

Gruß
DeLaGhetto
Hallo DeLaGhetto,

teste mal folgendes Makro. Vielleicht sagt es Dir zu.

Code:

Option Explicit

Sub Uebertragen()
 Dim vArr As Variant, i As Long, vGefunden As Variant
 
 With Sheets("Tabelle1").UsedRange
     vArr = .Value
     For i = 1 To UBound(vArr)
         With Sheets("Tabelle2")
             vGefunden = Application.Match(vArr(i, 2), .Columns(2), 0)
             If Not IsError(vGefunden) Then
                vArr(i, 3) = .Cells(vGefunden, "A").Value
             End If
         End With
     Next i
     .Value = vArr
 End With
End Sub

_________
viele Grüße
Karl-Heinz
Wow, also in der Beispieldatei funktioniert das perfekt.
Ich probiere das gleich an meine eigentliche Datei anzupassen, aber ich denke das sollte funktionieren.
Falls nicht, würde ich mich wieder hier melden.

Vielen Dank dir.
Doch noch eine Kleinigkeit,

ich habe eine Formel in Spalte D (siehe angehängte Beispieldatei).
Seltsamerweise wird nach ausführen des Makros die Formel in Spalte D gelöscht und dort steht nur noch das Ergebnis, was die Formel vorher ausgerechnet hatte.
Das müsste irgendwie noch geändert werden.

Ich verstehe aber irgendwie nicht, warum das Makro überhaupt Einfluss hat auf die Spalte D. Aber da kannst du mir bestimmt ganz schnell helfen.

Danke und Gruß
DeLaGhetto
Hallo

du kennst dich offenbar mit VBA nicht aus, sonst wüsstest du beim Befehl  vArr= .Value das hier ein Array mit dem gesamten Bereich geladen wird.
Beim zurückladen werden alle Formeln mit Werten überschrieben. Damit kann der Code nicht klappen!  Probier bitte mal diese For Next Variante!
Eine uralte Kamelle, aber der übertragt nur das Datum aus Reiter 2  in den Reiter1.  Sonst wird nichts an den bestehenden Daten geändert!

mfg Gast 123

Code:
Sub Uebertragen_Gast()
Dim vGefunden As Variant
Dim AC As Range, lz2 As Long
With Sheets("Tabelle1")
    lz2 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
    For Each AC In Sheets("Tabelle2").Range("B2:B" & lz2)
        vGefunden = Application.Match(AC, .Columns(2), 0)
        If Not IsError(vGefunden) Then
           .Cells(vGefunden, 3).Value = AC.Offset(0, -1)
        End If
    Next AC
End With
End Sub
Perfekt.
Jetzt funktioniert alles wie es sein soll.

Danke nochmal!
Nachtrag:

Man hätte natürlich bei der Array-Kopiererei auch die Einschränkung auf die ersten beiden Spalten machen können.

Aber ob das relevant ist, dazu muss man auch wissen, was genau gewünscht wird mit allem drum und dran.

Gruß
Karl-Heinz
Kannst du das vielleicht kurz als Code hier posten wie das aussehen würde?
Das wäre nett, dann kann ich mir das abspeichern für die Zukunft.
Seiten: 1 2