Ich experimentiere gerade mit der Verwendung von Formel in VBA, in dem ich ein Blatt mit 3 Spalten habe. Eins für Jahr, Monat und Tag. Gemeinsam werden sie ein pseudo-Datum in einer anderen Spalte unter Verwendung der Formel bilden:Warum ist mein Spaltenformat inkonsistent?
=I4& "/" &H4& "/" &G4
Dann in einem anderen Blatt ich eine Spalte, die die Pseudo-date und kopieren Sie sich über Vlookup in VBA erhalten.
Bevor ich VBA verwendet habe, legte ich die Formel in die Spalte selbst und es funktioniert gut. Nur wenn ich versuchte, es in VBA zu platzieren, passiert Seltsamkeit.
Einige Zellen haben das richtige Format, während einige standardmäßig eine Folge von Zahlen sind. Bei genauerer Betrachtung enden Datumsangaben mit Tagen, die kleiner als 13 sind, standardmäßig auf Zahlenfolgen
Beispiel: Einige Zellen haben die Nummern 42741 usw., während andere das richtige Format 20/6/2017 haben.
Ich habe sichergestellt, dass die Vlookup-Spalte das gleiche Format wie die Pseudo-Datumspalte verwendet, die allgemein ist und das Problem weiterhin besteht.
Wenn ich das Format in ein Datum änderte, enden diejenigen, deren Datum standardmäßig auf Zahlenfolgen festgelegt wurde, mit den Tagen und Monaten, die umgekehrt wurden. (1/8/2017 wird 8/1/2017 und so weiter). Wiederum sind diejenigen mit Tagen 13 und älter nicht betroffen.
Ich habe sogar versucht, das Zahlenformat auf der Vlookup-Spalte aber noch einmal kein Glück zu setzen. Hier ist der Code als Referenz.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a4:a9999")) Is Nothing Then
With Me.Range("d4:d9999")
.Formula = "=IF(ISNA(VLOOKUP(A4,ProjectEntry,10,FALSE)),"""",VLOOKUP(A4,ProjectEntry,10,FALSE))"
.Value = .Value
.NumberFormat = "dd/mm/yyyy"
End With
Die Frage ist jetzt, warum ist Excel alle Bonkers über dieses Datum Problem?
Bearbeiten: Ich habe einen Weg gefunden, um sicherzustellen, dass das Datumsformat an beiden Enden ähnlich ist.
Der Code verwendet jetzt Kopieren und Einfügen als Werte, um die gewünschten Daten zu erhalten.
With Me.Range("d4:d9999")
.Formula = "=IF(ISNA(INDEX(ProjectEntry,MATCH(A4,ProjectEntry[Project No],FALSE),10)),"""",INDEX(ProjectEntry,MATCH(A4,ProjectEntry[Project No],FALSE),10))"
.Copy
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
jedoch das Problem, das ich mit diesem ist, dass es hinter dem Kopierfeld verlässt (das sich bewegende Feld gepunkteten Linien, die angezeigt wird, wenn Sie kopieren Zelle (n)) und es immer auf die erste Zeile springe ich in die deklarierte Code (Zeile 4). Ich möchte nicht jedes Mal bis zum Ende scrollen, wenn ich meine Daten eintrage. Gibt es eine Möglichkeit, dies in meinem Code zu entfernen?
Excel ist verwirrt über das Format (sind die Tage zuerst oder die Monate)?Versuchen Sie es mit ISO 8601 zu füttern, da es eindeutig ist ('yyyy-MM-dd'), unabhängig davon, wie Sie das Datum visuell formatieren. –