У меня довольно странная проблема с созданной мной книгой, которая сильно зависит от макросов. Это сосредотачивается вокруг простого VLOOKUP() .

В настоящее время мой макрос создает позицию на одном листе (лист A), а затем копирует эту позицию на другой лист (лист B). После того, как эта позиция скопирована, я использую функцию VLOOKUP() на листе B, чтобы найти дату и время позиции обратно на листе A, чтобы убедиться, что она все еще находится в рабочей книге.

Обычно весь этот сценарий работает нормально. VLOOKUP() явно может найти уникальный идентификатор на листе B и проследить его до листа A.

У меня проблема в том, что если кто-то входит в ячейку (используя F2, двойной щелчок по ячейке и т.д.), Которая содержит дату и время на листе B, функция VLOOKUP() выходит из строя. Это решается нажатием клавиши F2 в ячейке «Дата и время» на листе А.

Это вызывает массу проблем, потому что у меня есть макрос, который удаляет позиции, если они выдают ошибку, поэтому эта временная ошибка отбрасывает все.

Я пробовал сопоставлять форматы, а что нет, но это кажется довольно уникальной и странной проблемой.

Кто-нибудь сталкивался с этим ранее? Можете поделиться какими-нибудь исправлениями?


Лист A (обратите внимание, что дата и время забронированы являются уникальным идентификатором)

Лист Б

Формула в A3

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

Вот как выглядит лист B, когда формула дает ошибку:

1 ответ1

0

Эта проблема вызвана тем, что ваш макрос помещает текстовое значение в ячейки « Date&Time Booked , но устанавливает числовой формат ячеек либо в General либо в пользовательский формат даты (намеренно или иным образом).

Когда вы нажимаете F2, а затем вводите в ячейке « Date&Time Booked листа B, Excel преобразует текст « дата-время» в последовательную дату-время и настраивает числовой формат в произвольный формат даты (так, чтобы он все еще выглядел одинаково). Ваша функция VLOOKUP() теперь пытается сравнить текстовую дату и время с серийной датой (то есть числом), поэтому, конечно, они не будут совпадать. Повторение процесса в ячейке на листе А также преобразует это значение в последовательную дату и время, поэтому сопоставление снова выполняется успешно.

Не видя вашего макроса и точно не понимая, как вы впоследствии будете использовать записанные значения даты и времени, трудно дать конкретную рекомендацию относительно того, как решить проблему.

Самое простое решение - установить для свойства NumberFormat забронированных ячеек Date&Time Booked значение @ (Text).

Другое решение состоит в том, чтобы изменить макрос так, чтобы он записывал правильные порядковые даты в рабочие листы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .