Странная проблема VLOOKUP в листе макроса

370
dom176

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

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

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

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

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

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

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


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

Странная проблема VLOOKUP в листе макроса

Лист Б

Странная проблема VLOOKUP в листе макроса

Формула A3является

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

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

Странная проблема VLOOKUP в листе макроса

0
Если вы [отредактируете] вопрос, чтобы включить наименьший макрос, который воспроизводит проблему, мы могли бы помочь, в противном случае ваш вопрос слишком широк. DavidPostill 6 лет назад 1
"... ошибки Vlookup" - что вы имеете в виду? Он возвращает `# N / A` или что-то в этом роде, или формула фактически отключает ваш файл Excel и зависает? BruceWayne 6 лет назад 0
@BruceWayne Я отредактировал его с изображениями, он буквально выбрасывает ошибку Not in Book до тех пор, пока я не нажму F2 на листе A в ячейке Date & Time Booked. dom176 6 лет назад 0
@DavidPostill код представляет собой комбинацию синтаксиса copy .destination и ручных заливок для включения определенных позиций, не относящихся к листу B. Это происходит после выполнения кода, поэтому я добавил картинки, прежде чем я уменьшу фрагмент кода и вставлю его. dom176 6 лет назад 0
Есть ли у вас макросы, которые отключаются событиями на любом листе, например `Worksheet_Change` или` Worksheet_Select`? PeterT 6 лет назад 0
Если в `Sheet A` действительно есть пробел, то вам нужно использовать` '`вокруг имени листа`' Sheet A '! $ A: $ A` Scott Craner 6 лет назад 0
@ ScottCraner это не так, имя было изменено dom176 6 лет назад 0
@PeterT я не dom176 6 лет назад 0

1 ответ на вопрос

0
robinCTS

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

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

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

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

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

Похожие вопросы