2015-06-03 3 views
-1

Я написал этот макрос VBA для кода Excel много лет назад, и он внезапно прекратил работать. Я пытаюсь найти индекс строки в одном листе, который точно соответствует записи в текущем листе. Строка кода, который прекратил работу является:Функция MATCH внезапно перестала работать

Cells(rr, cc + 1).Value = "=MATCH(RC[-1], Num, 0)" 

Я не уверен, что Num это, так как он не ссылается нигде в макрос ранее. В частности, я не вижу, как он ссылается на рабочий лист, который меня интересует.

+0

Ctrl + K к кодовой строке и некоторым заклинаниям/грамматике – Jeeped

ответ

0

Если вы пытались поместить формулу в ячейку, определенную строкой: = rr, column: = cc + 1, тогда код на самом деле должно быть,

Cells(rr, cc + 1).FORMULAR1C1 = "=MATCH(RC[-1], Num, 0)" 

(извините - все заглавные буквы для акцента) Эта формула будет использовать в Named Range называется Num. Проверьте формулы ► Определенные имена ► Диспетчер имен для его существования. Он будет ссылаться на одну строку или столбец ячеек, где выполняется поиск значения одной ячейки слева.

Если вы попытаетесь положить формулу стиля xlR1C1 в качестве .Value, он может быть правильно интерпретированы рабочий лист над головой в виде формулы. Однако без определенного диапазона Num это приведет к ошибке #NAME? на листе.

+0

Спасибо за ваше предложение. Это еще не помогло. У меня может быть более простая проблема. Я заметил, что RC [-1] используется для возврата значения этой ячейки, и теперь он просто возвращает ячейку; то есть в моем текущем примере, rr равно 23, а cc равно 1. Он возвращает A23, а не значение этой ячейки. Кроме того, когда я запускаю макрос, формулы не оцениваются. – Dave

+0

Да, именно так работает функция [MATCH] (https://support.office.com/en-us/article/match-function-0600e189-9f3c-4e4f-98c1-943a0eb427ca). Он возвращает номер строки совпадения, поэтому именованный диапазон * Num * должен дублировать столбец A. Если вы хотите вернуть значение ячейки из столбца A или другого столбца, используйте [INDEX] (https://support.office. com/en-us/article/index-function-0ee99cef-a811-4762-8cfb-a222dd31368a)/Параметр функции MATCH или, возможно, [VLOOKUP] (https://support.office.com/en-us/article/vlookup- функция-adceda66-30de-4f26-923b-7257939faa65). – Jeeped

+0

Еще раз спасибо. Я заметил, что следующая формула работает хорошо: = MATCH (A22, Num, 0), но что = MATCH (A23, Num, 0) этого не делает. Обе ячейки A22 и A23 заполнены. ??? – Dave

0

Проблема оказалась плохой запись данных на листе, который я пытался подключить. Я не знаю, почему он не просто возвращает значение FALSE. Тем не менее, я решил свою проблему благодаря помощи с этого сайта. Спасибо.

Смежные вопросы