Seltsames VLOOKUP-Problem in einem Makro-schweren Arbeitsblatt

456
dom176

Ich habe ein seltsames Problem mit einer von mir erstellten Arbeitsmappe, die sehr makroabhängig ist. Es dreht sich um ein einfaches VLOOKUP().

Derzeit erstellt mein Makro eine Werbebuchung auf einem Blatt (Blatt A) und kopiert diese dann auf ein anderes Blatt (Blatt B). Nachdem diese Werbebuchung kopiert wurde, verwende ich eine VLOOKUP()Funktion in Blatt B, um Datum und Uhrzeit der Werbebuchung in Blatt A nachzuschlagen, um zu bestätigen, dass sie noch in der Arbeitsmappe enthalten ist.

Normalerweise funktioniert dieses ganze Szenario gut. Die VLOOKUP()eindeutige ID kann in Blatt B eindeutig gefunden und auf Blatt A zurückverfolgt werden.

Das Problem, das ich habe, ist, dass, wenn jemand die Zelle betritt (durch F2Doppelklicken auf die Zelle usw.), die Datum und Uhrzeit in Blatt B enthält, die VLOOKUP()Funktion fehlerhaft ist. Dieses Problem wird gelöst, indem Sie F2in Blatt A in der Zelle Datum und Uhrzeit einen Treffer treffen .

Dies verursacht eine ganze Reihe von Problemen, da ich ein Makro habe, das Werbebuchungen löscht, wenn sie fehlerhaft sind. Dieser temporäre Fehler wirft also alles ab.

Ich habe passende Formate ausprobiert und was nicht, aber es scheint ein ziemlich einzigartiges und seltsames Thema zu sein.

Hat jemand das zuvor gesehen? Können Sie Fixes mitteilen?


Blatt A (beachten Sie, dass das Datum und die Uhrzeit, zu der gebucht wurde, eine eindeutige ID sind)

Seltsames VLOOKUP-Problem in einem Makro-schweren Arbeitsblatt

Blatt B

Seltsames VLOOKUP-Problem in einem Makro-schweren Arbeitsblatt

Die Formel in A3ist

=IFERROR(VLOOKUP($C3, 'Sheet A'!$A:$A,1,0),"Not in Book") 

So sieht Blatt B aus, wenn die Formel fehlerhaft ist:

Seltsames VLOOKUP-Problem in einem Makro-schweren Arbeitsblatt

0
Wenn Sie die Frage so bearbeiten, dass sie das kleinste Makro enthält, das das Problem reproduziert, können wir möglicherweise helfen. Andernfalls ist Ihre Frage zu umfangreich. DavidPostill vor 5 Jahren 1
"... die Vlookup-Fehler raus" - was meinst du damit? Es gibt '# N / A' oder etwas zurück, oder die Formel hängt Ihre Excel-Datei tatsächlich auf und friert ein? BruceWayne vor 5 Jahren 0
@BruceWayne Ich habe es mit Bildern bearbeitet, es wirft buchstäblich den Fehler "Nicht im Buch" auf, bis ich auf Blatt A in der Zelle "Datum & Zeit" die Taste "F2" drücke. dom176 vor 5 Jahren 0
@DavidPostill der Code ist eine Kombination aus einer Kopie .destination-Syntax sowie manuellem Ausfüllen, um bestimmte Werbebuchungen exklusiv für Blatt B einzuschließen. Dies geschieht durch Ausführung des Code, so dass ich Bilder hinzugefügt habe, bevor ich den Codeabschnitt schmälere und diesen füge. dom176 vor 5 Jahren 0
Haben Sie Makros, die durch Ereignisse auf einem der beiden Blätter ausgelöst werden, z. B. `Worksheet_Change` oder` Worksheet_Select`? PeterT vor 5 Jahren 0
Wenn "Blatt A" wirklich ein Leerzeichen enthält, müssen Sie "" um den Blattnamen "Blatt A" verwenden! $ A: $ A " Scott Craner vor 5 Jahren 0
@ScottCraner ist es nicht, Name wurde geändert dom176 vor 5 Jahren 0
@PeterT ich nicht dom176 vor 5 Jahren 0

1 Antwort auf die Frage

0
robinCTS

Dieses Problem wird durch das Makro eine Platzierung Text - Wert in den Date&Time BookedZellen, aber das Zahlenformat der Zellen einstellen, um entweder Generaloder ein benutzerdefiniertes Datumsformat (absichtlich oder nicht).

Wenn Sie F2und dann Enterin der Date&Time BookedZelle von Blatt B drücken, konvertiert Excel die Textdatenzeit in eine serielle Datumszeit und passt das Zahlenformat an ein benutzerdefiniertes Datumsformat an (damit es immer noch gleich aussieht ). Ihre VLOOKUP()Funktion versucht nun, eine Text-Datumszeit mit einer seriellen Datumszeit (dh einer Zahl) zu vergleichen, sodass sie natürlich nicht übereinstimmen. Durch Wiederholen des Prozesses für die Zelle in Blatt A wird dieser Wert ebenfalls in eine serielle Datumszeit konvertiert, sodass die Übereinstimmung erneut erfolgreich ist.

Ohne das Makro zu kennen und zu verstehen, wie Sie die gebuchten Datetime-Werte später verwenden, ist es schwierig, eine spezifische Empfehlung zur Lösung des Problems zu geben.

Die einfachste Lösung besteht darin, die NumberFormatEigenschaft der Date&Time BookedZellen auf @(Text) festzulegen.

Die andere Lösung besteht darin, das Makro so zu ändern, dass es die richtigen seriellen Datenzeiten in die Arbeitsblätter schreibt.