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

#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 значения и ссылаюсь на другой лист, это не работает.