#google-sheets #google-sheets-formula
#google-sheets #google-sheets-формула
Вопрос:
Вот что я пытаюсь сделать: у меня есть список курсов в таблицах Google, элементы которых будут добавляться ежедневно, вставляя их в конец текущего списка. Затем я хочу проверить, был ли курс уже добавлен в список ранее. Если это так, значение определенного столбца получит значение, которое имеет первое вхождение этого курса. Поэтому я буду использовать =INDEX(MATCH … и диапазон в части сопоставления будет представлять собой все ячейки в столбце над ячейкой, которая отмечена. Совпадающая часть формулы очевидна, если вы перетаскиваете или копируете формулу вниз:
= MATCH(A2; A$1:A2; 0)
Однако я экспериментировал с другими способами достижения этой цели, а именно
MATCH(A2; "A$1:A"amp;ROW()-1; 0)
(Я также пробовал это без кавычек) и
MATCH(A2; (ADDRESS(1;1;2)amp;":"amp;ADDRESS(ROW()-1;1; 4)); 0)
Оба они не работают. Я не могу понять, почему. (Кстати, точка с запятой в порядке, где я живу). Я получаю #N / A везде и сообщение о том, что значение не было найдено при оценке соответствия.
Есть мысли о том, что я делаю неправильно? Также: если бы я заставил это работать, есть ли какие-либо преимущества или недостатки при копировании простой формулы полностью вниз? Заранее большое вам спасибо.
Ответ №1:
Вот подход ArrayFormula, поэтому вам нужна только одна формула
=ArrayFormula(IFNA(IF(MATCH(A2:A,A2:A,0)<>ROW(A2:A)-ROW() 1,A2:A,"N/A")))
Ответ №2:
Это потому, что для второго параметра MATCH
функции требуется диапазон, но вы в обоих случаях передаете строку. Я не знаю, почему вам не нравится первый вариант, но вы можете использовать эту OFFSET
функцию.
=INDEX(A:A;MATCH(A2; OFFSET($A$1;0;0;ROW()-1); 0))
Комментарии:
1. Большое вам спасибо. Дело не в том, что мне не нравится первый вариант. Но в другой электронной таблице я недавно использовал ROW() в косвенной функции, поэтому мне просто интересно, будет ли подход с помощью ROW() также работать и есть ли какие-либо существенные различия между различными решениями. Итак, мой вопрос был больше о расширении моего «набора инструментов» в Google Sheets. Но не кажется ли вам, что сообщение об ошибке «значение не найдено» вводит в заблуждение? Разве сообщение типа «второй параметр СООТВЕТСТВИЯ не является диапазоном» не было бы более точным?
2. @Christofvandeneynd Вы также можете использовать свои
MATCH
функции, если включите вINDIRECT
функцию второй параметр. т.е.MATCH(A2; INDIRECT("A$1:A"amp;ROW()-1); 0)
. Но в принципе, чем меньше функций вы используете, тем быстрее будет работать формула.