Erstellen eines Makros zum Kopieren und Einfügen von Daten in eine andere Arbeitsmappe

Erstellen eines Makros zum Kopieren und Einfügen von Daten in eine andere Arbeitsmappe

Ich habe zwei Arbeitsmappen. Eine wird per E-Mail gesendet und enthält ein Diagramm mit einer Spalte, die mit den Daten gefüllt ist, also 01.11.10 bis 30.11.10. Für diesen Tag ist das Diagramm mit einer Datenzeile gefüllt.

Die zweite Arbeitsmappe enthält ein Diagramm mit einer Spalte, die ebenfalls mit den Daten gefüllt ist. Ich brauche Hilfe beim Erstellen eines Makros, das das Datum aus Arbeitsmappe2 betrachtet und dieses Datum mit Arbeitsmappe1 abgleicht, per E-Mail gesendet wird und die Datenzeile aus Arbeitsmappe1 kopiert und die Zeile in Arbeitsmappe2 in der Zeile mit demselben Datum einfügt. Ich habe noch nie ein Makro erstellt, daher wäre ich für jede Hilfe sehr dankbar

Antwort1

Ich könnte mir vorstellen, dass VLOOKUPin diesem Fall eine Formel einfacher wäre als ein Makro. Nachdem Sie die Formel in die Spalte eingetragen haben, führen Sie COPY & PASTE.Values ​​aus, um die Formel zu entfernen.

Im SVERWEIS-Beispiel bearbeitet: Sie müssen eine Tabelle mit den Daten in Ihrer Arbeitsmappe erstellen, die mit den Daten in der per E-Mail gesendeten Arbeitsmappe identisch sind. Passen Sie Folgendes an Ihre Situation an

A1 = ist der Nachschlagewert (Datum?) aus der Tabelle, deren Werte Sie in der E-Mail haben möchten
[Example.xlsx] = ist der Name Ihrer per E-Mail gesendeten Arbeitsmappe
Sheet1! = der Name der Tabelle in der per E-Mail gesendeten Arbeitsmappe, die die Datentabelle enthält
$A$1:$B$30 = der vollständige Datenbereich in der per E-Mail gesendeten Arbeitsmappe
2 = die Spalte im Datenbereich, aus der wir den Rückgabewert erhalten möchten (Spalte 2 in A und B)
FALSE = wir möchten eine genaue Übereinstimmung mit dem Nachschlagewert in den E-Mail-Daten

=VLOOKUP(A1,[Example.xlsx]Sheet1!$A$1:$B$30,2,FALSE)

Wenn Sie jedoch nicht davor zurückschrecken, eine Arbeitsmappe als Vorlage für den Empfang der Daten zu verwenden, funktioniert Folgendes, um es einfach zu halten. Platzieren Sie es einfach in einem Modul der Vorlagenarbeitsmappe und speichern Sie es. Wenn Sie eine neue E-Mail erhalten, öffnen Sie die Vorlage, öffnen Sie die E-Mail-Arbeitsmappe und aktivieren Sie dann das Makro aus der E-Mail-Arbeitsmappe

Annahmen im Code:
1: In der per E-Mail gesendeten Arbeitsmappe beginnen die Daten in Zelle A1.
2: In der Makro-/Vorlagenarbeitsmappe beginnen die Daten in Zelle A1.
Wenn eine dieser Annahmen falsch ist, passen Sie die Startwerte für L1 und/oder die Zellenobjekte an (der erste Wert, L1, ist die Zeile und die zweite Zahl ist die Spalte; A = 1).

Sub CopyData()
    Dim All As New Collection
    Dim One As Variant, L1 As Integer, L2 As Integer
    Dim TW As Workbook, EW As Workbook

    Set TW = ThisWorkbook
    Set EW = ActiveWorkbook

    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        ReDim One(0 To 1)
        One(0) = Cells(L1, 2).Value
        One(1) = Cells(L1, 3).Value
        All.Add One
        Erase One
        L1 = L1 + 1
    Loop

    TW.Activate
    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        For L2 = 1 To All.Count
            One = All(L2)
            If One(0) = Cells(L1, 2).Value Then
                Cells(L1, 3).Value = One(1)
                Erase One
                Exit For
            Else
                Erase One
            End If
        Next L2
        L1 = L1 + 1
    Loop
End Sub

verwandte Informationen