Есть ли способ использовать ARRAYFORMULA, чтобы найти самый последний четный ввод столбца? - PullRequest
1 голос
/ 18 марта 2019

РЕШЕННОЕ РЕДАКТИРОВАНИЕ

Спасибо за помощь. Решение здесь .

ОРИГИНАЛЬНЫЙ ПОЧТА

Я создал страницу Google, чтобы описать проблему, с которой я столкнулся, здесь (https://docs.google.com/spreadsheets/d/1yK6ZAX8BFnEqiuQO9HIxuY0l62ewDDccj-8EN1r2i2w/edit?usp=sharing).

Я также опишу словами ниже проблему, с которой я столкнулся, наряду с решениями, которые я попробовал.

link to the image of worksheet

Данные столбца A являются случайными однозначными (0-9). Мне бы хотелось, чтобы в столбце B отображалось самое последнее четное число из столбца A, но только до определенной строки. Эта конкретная строка является строкой, соответствующей строке ячейки в столбце B. Другими словами, в ячейке B7 я хочу найти последнее введенное четное число столбца A, в частности, только в диапазоне A2: A7 (A1 содержит заголовок столбца).

На самом деле это довольно простая формула, и я могу получить желаемые результаты, просто проверив, является ли значение в ячейке в столбце A четным, а затем вернув значение этой ячейки, если оно есть, или вывод этой ячейки. выше, если это не так. Таким образом, формула будет выглядеть примерно так: =IF(ISEVEN(A7),A7,B6)​

Однако моя проблема заключается в том, что длина данных в столбце A будет увеличиваться по мере ввода большего количества данных, и мое текущее решение использования маркера заполнения для копирования формулы в новые ячейки является не элегантным и отнимает много времени. Поэтому мое желаемое решение - использовать формулу массива, введенную в первую ячейку столбца B (B2), которая может возвращать то же значение, что и другая формула. Формула, которую я пытался ввести, чтобы выполнить это, была следующей: =ARRAYFORMULA(IF(ISEVEN(A2:A),A2:A,INDIRECT(ADDRESS(ROW(A2:A)-1,2))))​

Однако, как научила меня некоторая моя предыдущая работа с массивами, не все формулы повторяются, как ожидалось, в массиве. Кажется, что формула может возвращать правильные выходные данные в уже четных строках, но она не может вернуть ожидаемое последнее введенное четное число для всех остальных строк. Похоже, что формула не может правильно интерпретировать аргумент ​value_if_false формулы IF.

Я немного новичок в написании сценариев, поэтому я все еще пытаюсь учиться, но я также пытался бездельничать с пользовательскими функциями. Я все еще не могу понять, когда речь заходит о кодировании, поэтому я так снисходительно отношусь к встроенным формулам Google Sheets, но боюсь, что, возможно, я достиг предела того, что могут делать формулы Sheets.

Я открыт для опробования новых подходов, но мое единственное реальное ограничение в том, что я действительно хотел бы, чтобы это было решение в одно касание (или даже лучше, без касания), надеюсь, что оно не слишком далеко выходит за рамки этого вопрос. Любая помощь будет высоко ценится.

EDIT

После этой проблемы я вернулся и попытался использовать формулу OFFSET, надеясь, что она будет хорошо работать с формулой массива. Увы, я не смог, но подумал, что должен хотя бы опубликовать свой прогресс здесь для справки.

Попытка со смещением

Все еще работаем над этим!

1 Ответ

0 голосов
/ 18 марта 2019

Мне кажется, что выполнение vlookup для номера строки

=ArrayFormula(if(A2:A="","",vlookup(row(A2:A),{if(iseven(A2:A),row(A2:A)),A2:A},2)))

enter image description here

Примечание: если для некоторых строк в диапазоне нет четных чисел, для этих строк будет получено # N / A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...