Указание, в какие ячейки включается формула, с формулой - PullRequest
0 голосов
/ 28 мая 2019

Извиняюсь за заголовок, не знаю, как задать этот вопрос. Я пытаюсь указать диапазон данных, которые у меня есть, в столбце Excel, где диапазон соответствующих значений изменяется. Таким образом, для визуализации данные могут находиться в ячейках A1-A4 с нулями ниже (или данные в ячейках A1-A3 или A1-A25 и т. Д.). Используя countif, я могу получить число ненулевых значений в изменяющемся диапазоне, что полезно, поскольку оно указывает конечную строку, которую я хочу для своего диапазона. Моя проблема в том, как я использую это значение в формуле. В моей голове (если бы я поместил формулу countif в B1), диапазон выглядел бы примерно так: $ A $ 1: $ A $ (значение из B1), но я не уверен, как применить это на практике. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

Непрямое и смещение изменчивы, и хотя одна изменчивая формула не вызовет проблемы, многие замедляют вычисления.Изменчивые функции пересчитываются каждый раз, когда Excel пересчитывает, изменились ли данные или нет.

Я предпочитаю INDEX для них:

$A$1:INDEX(A:A,COUNTIF(A:A,">0"))

Но даже COUNTIF (), если используется слишком много раз, может замедлитьвниз по калькам.Вы можете использовать MATCH в этом случае:

$A$1:INDEX(A:A,MATCH(0,A:A,0)-1)

, который теперь найдет первый 0 и установит ячейку выше этой как последнюю в диапазоне.

3 голосов
/ 28 мая 2019

Вы можете использовать функции INDIRECT или OFFSET

Использование INDIRECT является более простым подходом: указать диапазон, начинающийся в столбце A, Строка 1 и заканчивающаяся в столбце A, строка COUNTIF(A:A,">0"), вы просто напишите INDIRECT("A1:A" & COUNTIF(A:A, ">0")) - поэтому, если есть 7 ячеек со значениями больше 0, это становится INDIRECT("A1:A7")

с использованием OFFSETболее сложный - вам нужно указать, сколько ячеек осталось / вниз для перемещения (0 и 0), сколько строк данных нужно получить (COUNTIF(A:A, ">0")) и сколько столбцов данных нужно получить (1), из вашей стартовой позиции (A1) - так это выглядит примерно так: OFFSET(A1, 0, 0, COUNTIF(A:A, ">0"), 1)

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