
Ich verwende Excel 2007. Ich habe eine Excel-Datei, in der Zelle A1 ein Datum und Zelle B1 einen Betrag in Blatt 1 anzeigt. Ich muss das Datum in A1 und den Betrag B1 in einer Datenbank in Blatt 2 automatisch aktualisieren. Die Datenbank in Blatt 2 ist mit Zelle A1 und B1 in Blatt 1 verknüpft, indem ich Vlookup verwende und das Datum in A1 als Nachschlagewert auswähle. Die Excel-Datei wird täglich verwendet und der Inhalt von Zelle A1 und B1 ändert sich täglich. Blatt 2 muss alle Daten und Beträge in Zelle A1 und B1 für ein Jahr aufzeichnen
Mein Problem:
1. Wie erstelle ich meine Datenbank, um täglich das vorherige Datum und den Betrag in A1 und B1 zu erfassen, da sich die Daten in A1 ständig ändern, da sie täglich eingegeben werden.
Zum Beispiel :-
Am 14.03.2015 (Zelle A1) beträgt der Betrag in Zelle B1 3.333 USD. Daher erfasst die Datenbank das Datum 14.03.2015 und 3.333 USD in Blatt 2 der Datenbank.
Am folgenden Tag, dem 15.03.2015, wird der Inhalt der Zelle A1 nun auf 15.03.2015 geändert und B1 zeigt einen Betrag von 5.555 USD an.
Meine Herausforderung besteht darin, sowohl die Daten als auch die Werte in Blatt 2 meiner Datenbank zu behalten, da ich nur ein Datum und einen Wert für den aktuellen Tag abrufen kann.
Ehrlich gesagt kenne ich VBA nicht.
Antwort1
Dies wird nur geringfügig komplizierter, da Sie zwei Zellen kopieren möchten. Normalerweise können Sie das Worksheet_Change
Ereignis verwenden, um zu erfassen, wann immer sich eine Zelle ändert. Sie möchten jedoch warten, bis sich beide Zellen geändert haben. Anstatt eine Regel durchzusetzen, nach der Sie sie in der richtigen Reihenfolge ändern müssen und dann nur die letzte Zelle beobachten, habe ich dies geschrieben, um stattdessen auf die C1
Änderung der Zelle zu warten. Mein Gedanke war, dass Ihre Benutzer bearbeiten A1
und B1
dann eingeben könnenirgendetwasin C1
und der Code wird ausgelöst. Sie können die Datenüberprüfung verwenden, um ein Dropdown-Menü hinzuzufügen, C1
das nur eine Option wie „Los“ hat. Der folgende Code kopiert die Werte von A1
& B1
in die letzte Zeile in Blatt 2, wenn der Wert von C1
geändert wird, und löscht diesen Wert dann aus C1
.
Öffnen Sie den VBA-Editor ( Alt+ F11ist eine Methode). Suchen Sie im Fenster „Projekt-Explorer“ auf der linken Seite nach Blatt 1 (es sollte bereits vorhanden sein und ein Baummenü mit allen geöffneten Arbeitsmappen und den darin enthaltenen Arbeitsblättern enthalten). Doppelklicken Sie auf das Blatt, um dessen Codefenster zu öffnen. Kopieren Sie den folgenden Code und fügen Sie ihn ein: (Möglicherweise müssen Sie die Zeile bearbeiten, Worksheets("Sheet2")
wenn „Sheet2“ nicht der tatsächliche Name Ihres zweiten Arbeitsblatts ist, in das Sie die Daten kopieren möchten.)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Not Intersect(Target, Range("C1")) Is Nothing Then
With Worksheets("Sheet2")
r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & r).Value = Range("A1").Value
.Range("B" & r).Value = Range("B1").Value
End With
Application.EnableEvents = False
Range("C1").ClearContents
Application.EnableEvents = True
End If
End Sub
(An die VBA-Junkies da draußen: Normalerweise bevorzuge ich die Verwendung von Cells
„over“ Range
, aber das ist nicht so sofort verständlich, also habe ich mich für „“ entschieden Range
.)
Antwort2
Wenn Sie die Werkzeuge für die Arbeit nicht kennen und nicht erlernen können, bleibt Ihnen keine andere Alternative, als die Arbeit manuell auszuführen.
Schreiben Sie dann die Schritte auf, die Sie manuell durchführen mussten. Dies dient als Leitfaden für die Automatisierung.
Beginnen Sie dann bei Google zu suchen, wie Sie ein einfaches VBA-Makro erstellen, das die aufgeschriebenen Schritte automatisiert.