#excel #vba
#excel #vba
Вопрос:
У меня есть два значения на листе «SheetA»
Лист:
Column A Column B
Apple 10.5
Я хочу, чтобы эти два значения были сопоставлены с листом «SheetB» и получить ответ из столбца C «Готово»
SheetB:
Column A Column B Column C
Apple 10 Undone
Apple 10.5 Done
Используя функцию сопоставления, я попытался
mav = Evaluate("INDEX(SheetB!$C$1:$C$5,MATCH(A1 amp; B1,SheetB!$A$1:$A$5amp;SheetB!$B$1:$B$5,0))")
Msgbox mav
Я получаю:
Ошибка 2042
Пожалуйста, помогите мне в этом. Это пример. Я хотел использовать эту формулу в своем коде, как только получу решение. Заранее спасибо.
Когда я ссылаюсь на значения с тем же листом, как показано ниже, это работает.
mav = Evaluate("INDEX($C$1:$C$5,MATCH(A1 amp; B1,$A$1:$A$5amp;$B$1:$B$5,0))")
Когда я ссылаюсь на другой лист, он не работает.
mav = Evaluate("INDEX(SheetB!$C$1:$C$5,MATCH(A1 amp; B1,SheetB!$A$1:$A$5amp;SheetB!$B$1:$B$5,0))")
Ответ №1:
Вы пропустили =
символ:
mav = Evaluate("=INDEX(SheetB!$C$1:$C$5,MATCH(A1 amp; B1,SheetB!$A$1:$A$5amp;SheetB!$B$1:$B$5,0))")
Кроме этого ошибка 2042 равна #N/A
так что, возможно, вы сделали неверную ссылку на лист. При правильных ссылках код работает нормально, см. Ниже:
Что также приятно отметить; на самом деле это формула массива, но в VBA вам нужно только строковое значение формулы 🙂
Комментарии:
1. Я всегда считал, что Evaluate одинаково хорошо работает (без каламбура) со знаком
=
или без него.2. @user11246173, да, это так. Надеялся, что это что-то изменит. Это не так, поэтому единственным вариантом является то, что OP допустил ошибку в ссылках на листы, я думаю
3. Название листа правильное. я не знаю, как правильно указать это в приведенной выше формуле. Я пробовал использовать кавычки, все еще не работает .. : (
4. @Mohamed_Ebu, согласно вашему собственному вопросу, вы не сделали ничего плохого. Пожалуйста, убедитесь, что ваш
SheetB
действительно вызванSheetB
! 🙂5. когда я использую функцию сопоставления, сопоставляющую одно значение на другом листе, она работает нормально. когда я объединяю 2 значения и ссылаюсь на другой лист, это не работает.