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 VLOOKUP
in 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