Я программист, поэтому, пожалуйста, потерпите меня. Я понимаю, что Excel не обязательно то, к чему я привык в других областях, но я ломаю голову над тем, как сделать sh что-то, что кажется несколько простым.
У меня есть столбец чисел которые сами являются основой формулы. Я хочу отфильтровать эти ячейки на основе некоторых критериев и передать их другой функции для выполнения вычислений.
Я понимаю, что это можно сделать с помощью «фильтров» в превосходном смысле. Это означало бы, что мне придется нажимать несколько раз для каждого вычисления, фильтровать результаты, копировать значение и вставлять его туда, где оно должно быть. Если данные когда-либо изменятся, мне придется сделать все это снова.
То, что я ищу, является эквивалентом фильтрации на языке программирования, вот пример:
let range = [1,2,3,4,0,-1,-2,-3,-4];
let subrange = range.filter(function (cell) { return cell > 0; });
subtotal(1,subrange);
Итак, на что похоже мое превосходство.
У меня есть столбец G, который содержит более 12 000 результатов, каждый из этих столбцов выглядит следующим образом:
=(En-Bn)/Bn
Они скопированы, n
означает номер строки из 5- 12,000 +
Теперь я хотел бы создать ячейку M2, содержащую:
=SUBTOTAL(1,[ Gn in G5:G12000 where Gn > 0 ])
Цель состоит в том, чтобы я не хотел указывать и нажмите, потому что на самом деле мне нужно создать еще много ячеек (около 20) с подобными видами предикатов «фильтра».
Было бы неплохо, насколько это возможно, если бы я тоже этого не делал нужно указать диапазон столбцов n ... n-1, так как в идеале это может измениться. Может быть 10, может быть 20 000, не имеет значения.
Лучшая формула или решение будет выглядеть так:
SUBTOTAL(1, [ Gn in G0:GLENGTH where Gn > SOMECELL ])
Любые указатели или предложения, где читать, или решение было бы здорово. Я искал в Google, и мне кажется, что мне не хватает понимания, чтобы найти ответ в представленном материале.
Кроме того, прошу прощения за использование языка программирования, я знаю, что формулы Excel не обязательно являются 1: 1, я просто ищу способ сэкономить время. Приветствуются ответы в VBA или с помощью макросов, главное найти способ сделать это ...
Best, Jason
Update
Я должен указать, что это должен быть немного обратно совместимым, поэтому я не могу использовать функцию FILTER, которая доступна только в> = 365