Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/использование переменной в функции HLookup - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
использование переменной в функции HLookup
logger Дата: Суббота, 16.03.2024, 17:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер, уважаемые специалисты.
Помогите, пожалуйста, правильно записать функцию HLookup.
Требуется сохранить заданную дату в переменную abcd и найти соответствие этой дате в таблице.

Если указываю ячейку с датой, не сохраняя её в переменную (Пример 1), то функция HLookup работает.
Если сохраняю в переменную ТЕКСТ (Пример 3), то функция тоже работает.
А вот если сохраняю в переменную ДАТУ (Пример 2), то функция ругается.
В чём ошибка записи?

Указывать в таблице даты в текстовом формате - всё работает, но неподходящий вариант.
На форуме есть рекомендация использовать «Evaluate» с функцией VLookup, но это для меня пока сложно.
К сообщению приложен файл: 5896530.xlsm (14.5 Kb)
 
Ответить
СообщениеДобрый вечер, уважаемые специалисты.
Помогите, пожалуйста, правильно записать функцию HLookup.
Требуется сохранить заданную дату в переменную abcd и найти соответствие этой дате в таблице.

Если указываю ячейку с датой, не сохраняя её в переменную (Пример 1), то функция HLookup работает.
Если сохраняю в переменную ТЕКСТ (Пример 3), то функция тоже работает.
А вот если сохраняю в переменную ДАТУ (Пример 2), то функция ругается.
В чём ошибка записи?

Указывать в таблице даты в текстовом формате - всё работает, но неподходящий вариант.
На форуме есть рекомендация использовать «Evaluate» с функцией VLookup, но это для меня пока сложно.

Автор - logger
Дата добавления - 16.03.2024 в 17:37
logger Дата: Понедельник, 18.03.2024, 08:33 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Уважаемые специалисты. "Методом тыка" сам сделал рабочий вариант.
Если кто-нибудь даст пояснение в чём разница между двумя кодами (ниже) - буду очень признателен.
Или как правильно задать вопрос в инете, чтобы об этом прочесть.

работает:
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
Дата добавления - 18.03.2024 в 08:33
_Boroda_ Дата: Понедельник, 18.03.2024, 09:23 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16744
Репутация: 6534 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Дата в Excel и VBA - это число. Число дней от 1 января 1900г. Например, дата 20.01.1900г - это число 20, а сегодня, 18.03.2023 - это число 45369. В Excel и VBA не совсем одинаково считается (разница на 29,02,1900г), но в нашем случае это неважно. Важно то, что Вам нужно искать дату среди дат, а Range("A3") по умолчанию дает .Value - именно значение, т.е. не то, что Вы видите в ячейке, а просто число (кол-во дней). А когда Вы пишете Range("A3").Text, то вот это уже будет как раз то, что Вы видите в ячейке, что Вам и нужно


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДата в Excel и VBA - это число. Число дней от 1 января 1900г. Например, дата 20.01.1900г - это число 20, а сегодня, 18.03.2023 - это число 45369. В Excel и VBA не совсем одинаково считается (разница на 29,02,1900г), но в нашем случае это неважно. Важно то, что Вам нужно искать дату среди дат, а Range("A3") по умолчанию дает .Value - именно значение, т.е. не то, что Вы видите в ячейке, а просто число (кол-во дней). А когда Вы пишете Range("A3").Text, то вот это уже будет как раз то, что Вы видите в ячейке, что Вам и нужно

Автор - _Boroda_
Дата добавления - 18.03.2024 в 09:23
logger Дата: Понедельник, 18.03.2024, 10:09 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Спасибо Вам, _Boroda_
Если можно, ещё ликбез...
Поясните, пжлста, почему потребовалось указать Range("A1:E2").Value вместо Range("A1:E2") ?
Диапазон ячеек, по умолчанию, это что?
 
Ответить
СообщениеСпасибо Вам, _Boroda_
Если можно, ещё ликбез...
Поясните, пжлста, почему потребовалось указать Range("A1:E2").Value вместо Range("A1:E2") ?
Диапазон ячеек, по умолчанию, это что?

Автор - logger
Дата добавления - 18.03.2024 в 10:09
_Boroda_ Дата: Понедельник, 18.03.2024, 11:10 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16744
Репутация: 6534 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Грубо говоря, Value - это значения ячеек. А без него - это сами ячейки со всеми своими свойствами (включая и значение). Value часто можно не указывать (оно подразумевается по умолчанию), но лучше все-таки указать, тем более, что иногда без этого не работает)))


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеГрубо говоря, Value - это значения ячеек. А без него - это сами ячейки со всеми своими свойствами (включая и значение). Value часто можно не указывать (оно подразумевается по умолчанию), но лучше все-таки указать, тем более, что иногда без этого не работает)))

Автор - _Boroda_
Дата добавления - 18.03.2024 в 11:10
logger Дата: Понедельник, 18.03.2024, 16:19 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Понял. Спасибо Вам! Доброго дня.
 
Ответить
СообщениеПонял. Спасибо Вам! Доброго дня.

Автор - logger
Дата добавления - 18.03.2024 в 16:19
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!