Добрый вечер, уважаемые специалисты. Помогите, пожалуйста, правильно записать функцию HLookup. Требуется сохранить заданную дату в переменную abcd и найти соответствие этой дате в таблице.
Если указываю ячейку с датой, не сохраняя её в переменную (Пример 1), то функция HLookup работает. Если сохраняю в переменную ТЕКСТ (Пример 3), то функция тоже работает. А вот если сохраняю в переменную ДАТУ (Пример 2), то функция ругается. В чём ошибка записи?
Указывать в таблице даты в текстовом формате - всё работает, но неподходящий вариант. На форуме есть рекомендация использовать «Evaluate» с функцией VLookup, но это для меня пока сложно.
Добрый вечер, уважаемые специалисты. Помогите, пожалуйста, правильно записать функцию HLookup. Требуется сохранить заданную дату в переменную abcd и найти соответствие этой дате в таблице.
Если указываю ячейку с датой, не сохраняя её в переменную (Пример 1), то функция HLookup работает. Если сохраняю в переменную ТЕКСТ (Пример 3), то функция тоже работает. А вот если сохраняю в переменную ДАТУ (Пример 2), то функция ругается. В чём ошибка записи?
Указывать в таблице даты в текстовом формате - всё работает, но неподходящий вариант. На форуме есть рекомендация использовать «Evaluate» с функцией VLookup, но это для меня пока сложно.logger
Уважаемые специалисты. "Методом тыка" сам сделал рабочий вариант. Если кто-нибудь даст пояснение в чём разница между двумя кодами (ниже) - буду очень признателен. Или как правильно задать вопрос в инете, чтобы об этом прочесть.
работает: abcd = Range("A3").Text Rezultat = Application.WorksheetFunction.HLookup(abcd, Range("A1:E2").Value, 2, False)
не работает: abcd = Range("A3") Rezultat = Application.WorksheetFunction.HLookup(abcd, Range("A1:E2"), 2, False)
Уважаемые специалисты. "Методом тыка" сам сделал рабочий вариант. Если кто-нибудь даст пояснение в чём разница между двумя кодами (ниже) - буду очень признателен. Или как правильно задать вопрос в инете, чтобы об этом прочесть.
работает: abcd = Range("A3").Text Rezultat = Application.WorksheetFunction.HLookup(abcd, Range("A1:E2").Value, 2, False)
не работает: abcd = Range("A3") Rezultat = Application.WorksheetFunction.HLookup(abcd, Range("A1:E2"), 2, False)logger
Дата в Excel и VBA - это число. Число дней от 1 января 1900г. Например, дата 20.01.1900г - это число 20, а сегодня, 18.03.2023 - это число 45369. В Excel и VBA не совсем одинаково считается (разница на 29,02,1900г), но в нашем случае это неважно. Важно то, что Вам нужно искать дату среди дат, а Range("A3") по умолчанию дает .Value - именно значение, т.е. не то, что Вы видите в ячейке, а просто число (кол-во дней). А когда Вы пишете Range("A3").Text, то вот это уже будет как раз то, что Вы видите в ячейке, что Вам и нужно
Дата в Excel и VBA - это число. Число дней от 1 января 1900г. Например, дата 20.01.1900г - это число 20, а сегодня, 18.03.2023 - это число 45369. В Excel и VBA не совсем одинаково считается (разница на 29,02,1900г), но в нашем случае это неважно. Важно то, что Вам нужно искать дату среди дат, а Range("A3") по умолчанию дает .Value - именно значение, т.е. не то, что Вы видите в ячейке, а просто число (кол-во дней). А когда Вы пишете Range("A3").Text, то вот это уже будет как раз то, что Вы видите в ячейке, что Вам и нужно_Boroda_
Спасибо Вам, _Boroda_ Если можно, ещё ликбез... Поясните, пжлста, почему потребовалось указать Range("A1:E2").Value вместо Range("A1:E2") ? Диапазон ячеек, по умолчанию, это что?
Спасибо Вам, _Boroda_ Если можно, ещё ликбез... Поясните, пжлста, почему потребовалось указать Range("A1:E2").Value вместо Range("A1:E2") ? Диапазон ячеек, по умолчанию, это что?logger
Грубо говоря, Value - это значения ячеек. А без него - это сами ячейки со всеми своими свойствами (включая и значение). Value часто можно не указывать (оно подразумевается по умолчанию), но лучше все-таки указать, тем более, что иногда без этого не работает)))
Грубо говоря, Value - это значения ячеек. А без него - это сами ячейки со всеми своими свойствами (включая и значение). Value часто можно не указывать (оно подразумевается по умолчанию), но лучше все-таки указать, тем более, что иногда без этого не работает)))_Boroda_