Вопрос или проблема
У меня есть таблица с датами и их данными, но столбец с датами не имеет форматирования и записан как yyyy-mm-dd
, например, 2016-08-29. Он выравнен по правому краю. Эта таблица создается из скрипта Google Analytics, поэтому у меня нет возможности контролировать ее форматирование, то есть я не могу вручную изменить столбец на формат даты.
Мой вопрос: как использовать VLOOKUP
, чтобы найти сегодняшнюю дату и затем значение в столбце B?
Это не работает, так как today() не возвращает формат yyyy-mm-dd
.
=vlookup(today(),'datasheet'!A16:B1000,2,false)
Это тоже почему-то не работает:
=vlookup(text(today(),"yyyy-mm-dd"),'datasheet'!A16:B500,2,false)
Так выглядит таблица данных:
Как использовать VLOOKUP
с сегодняшней датой или последней датой?
Вам просто нужно немного изменить логику.
Обычно ваша формула будет работать нормально, если вы сможете корректно отформатировать столбец с датой, но если столбец с датой автоматически извлекается в текстовом формате из другой программы, иногда у вас нет такой возможности. Поэтому вы можете изменить критерии, с которыми производите сопоставление. Вместо того чтобы значение поиска было датой в формате даты, вам нужно сделать значение поиска датой в текстовом формате.
Ниже приведенная формула работает для меня, используя пример данных на скриншоте ниже.
=VLOOKUP( TEXT(TODAY(),"yyyy-mm-dd"),A:C,2,FALSE)
Используя приведенный ниже пример (каждое значение отформатировано как текст), я получаю значение 0.010297839
В качестве альтернативы я рекомендую использовать INDEX MATCH, так как это считается более надежным, чем vlookup
или hlookup
:
=INDEX(A:C,MATCH(TEXT(TODAY(),"yyyy-mm-dd"),A:A,0), 2)
Это дает мне тот же результат 0.010297839
Устранение неполадок:
Если формула все еще не работает, попробуйте выполнить несколько следующих действий:
- Попробуйте использовать формулу на той же странице, чтобы проверить, правильно ли она связана. Если вы используете формулу с другой страницы или книги, это может вызвать ошибку.
- Дважды проверьте, что в диапазоне данных действительно есть сегодняшняя дата.
- Используйте
A:B
в вашей формуле, а неA16:B500
, чтобы убедиться, что ни одна строка не исключена. - Как я уже говорил, приведенные выше формулы работают для меня, поэтому, если они не работают для вас, возможно, есть другие причины неполадки, о которых нам неизвестно.
Ответ или решение
Использование функции VLOOKUP для поиска значения по сегодняшней дате или по последней дате в таблице, где даты хранятся в текстовом формате yyyy-mm-dd
, может вызвать затруднения, особенно если данные генерируются скриптом и форматирование не может быть изменено вручную. В вашей ситуации важно сфокусироваться на преобразовании формата даты, чтобы она соответствовала текстовому формату столбца.
Решение с использованием VLOOKUP
Функция VLOOKUP обычно требует точного совпадения форматов, поэтому мы должны преобразовать текущую дату в текст. Ваше намерение использования TEXT(TODAY(), "yyyy-mm-dd")
верно, но есть несколько моментов, на которые стоит обратить внимание:
-
Убедитесь, что в таблице действительно есть сегодняшняя дата. Это особенно важно, если ваши данные не обновляются автоматически каждый день.
-
Сам формат текста должен быть согласованным. Если даты в вашем наборе данных выровнены вправо, они вероятно сохранены в виде числового текста, что обычно не является проблемой для функции VLOOKUP, если правильная дата существует в таблице.
Вот формула, которую вам следует использовать:
=VLOOKUP(TEXT(TODAY(), "yyyy-mm-dd"), 'datasheet'!A:B, 2, FALSE)
Альтернативный метод с использованием INDEX и MATCH
Если вы столкнулись с ограничениями VLOOKUP, можно воспользоваться более гибким сочетанием INDEX и MATCH:
=INDEX('datasheet'!B:B, MATCH(TEXT(TODAY(), "yyyy-mm-dd"), 'datasheet'!A:A, 0))
Дополнительные рекомендации
-
Проверьте область данных. Убедитесь, что область данных охватывает весь потенциальный диапазон, который может включать текущую дату.
-
Используйте одну и ту же книгу или лист для отладки. Это поможет исключить ошибки, связанные с неправильной ссылкой на диапазон или другую книгу.
-
Убедитесь в соответствии форматов данных. Если что-то идет не так, попробуйте временно вывести на экран результат функции
TEXT(TODAY(), "yyyy-mm-dd")
для проверки его соответствия значениям в вашем столбце.
Эти шаги должны помочь вам успешно находить значения, соответствующие сегодняшней или самой последней дате, в вашем наборе данных.