
У меня есть таблица с тысячами наборов чисел. То есть, скажем, есть десять столбцов, и в каждом столбце есть число — и есть тысячи строк этих чисел.
Я хочу проверить, увеличиваются ли числа в каждой строке или нет. Например, представьте, что это строка номер один (где каждое число — это отдельный столбец):
13. 17. 25. 37. 39. 40. 53. 61. 68. 71
Как вы видите, все числа увеличиваются. Теперь представим, что это строка два:
13 5. 3. 18. 34. 17. 49. 83. 63. 71
В этом случае начальные и конечные числа такие же, как в первом наборе чисел, но выбранный путь совершенно другой.
Мне бы хотелось получить формулу для оценки того, насколько непрерывен рост.
Есть идеи?
решение1
=IFERROR(IFS(B6<A6,FALSE,C6<B6,FALSE,D6<C6,FALSE,E6<D6,FALSE,F6<E6,FALSE,G6<F6,FALSE,H6<G6,FALSE,I6<H6,FALSE,J6<I6,FALSE),TRUE)
Я думаю, это был бы самый простой способ сделать это.
IFS проверяет каждое число относительно предыдущего числа, если оно меньше предыдущего, возвращается значение ЛОЖЬ.
Если все числа больше предыдущего числа, то IFS не выдаст результат, что приведет к ошибке NA.
ISERROR преобразует ошибку NA в TRUE, что означает, что все числа увеличиваются.
Чтобы получить количество чисел, которые больше предыдущего числа в последовательности:
=COUNTIF(B11,">" & A11)+COUNTIF(C11,">" & B11)+COUNTIF(D11,">" & C11)+COUNTIF(E11,">" & D11)+COUNTIF(F11,">" & E11)+COUNTIF(G11,">" & F11)+COUNTIF(H11,">" & G11)+COUNTIF(I11,">" & H11)+COUNTIF(J11,">" & I11)
Каждый подсчет if сравнивает текущее число с предыдущим числом и учитывает только то число, которое больше предыдущего, а затем суммирует все подсчеты.
решение2
Для этого можно использовать формулы массива:
Предположим, что ваши данные находятся в A1:J1
, введите следующую формулу в ячейку =AND(B1:J1>A1:I1)
и нажмите Ctrl+ Shift+ Enter, чтобы создать формулу массива - обратите внимание, что Excel автоматически перенесет формулу {}
(вы не можете сделать перенос вручную!). В Google Таблицах вы можете использовать ArrayFormula
внутри AND
функции вместо сочетания клавиш Excel: AND(ArrayFormula(B1:J1>A1:I1))
.
Это выполнит поэлементные вычисления >
, а затем проверит, что все они истинны. Обратите внимание, что два диапазона смещены на одну ячейку, но имеют одинаковую длину, поэтому B1
и A1
будут сравниваться, C1
сравниваться B1
и т. д. Затем полученный массив будет передан в для AND
проверки того, что все они истинны.
После того как формула массива вставлена в первую строку, если у вас несколько строк, вы можете просто перетащить формулу вниз для каждой строки.
В качестве альтернативы, если по какой-то причине вы не хотите использовать массивы, вы можете сделать это без добавления еще одного диапазона ячеек ниже или рядом (или где угодно, если честно) со списком чисел. В этом дополнительном диапазоне ячеек вы можете выполнить сравнение каждой ячейки.
С данными, начинающимися с A1
, затем, скажем, в ячейке B2
, добавьте формулу (B1 > A1)
, затем перетащите формулу, чтобы она соответствовала ширине данных (формулы автоматически обновят ссылки). Наконец, вам просто нужно проверить, являются ли все эти ячейки истинными, что можно сделать с помощью AND(B2:J2)
.
решение3
Поскольку вы отметили google-spreadsheets, вы также можете использовать , ArrayFormula
чтобы упростить это в одну формулу:
=AND(ARRAYFORMULA(B1:J1>A1:I1))
Вы можете отрегулировать J1
и I1
соответствующим образом, если изменится количество строк.
Если все столбцы справа пустые, вы можете сделать =AND(ARRAYFORMULA((B1:Z1>A1:Y1)+(ISBLANK(B1:Z1))))
так, что автоматически будет работать с 26 столбцами, при условии, что все последующие столбцы будут пустыми.
решение4
Эти ответы будут работать, если у вас естьдинамические формулы массивадоступно в вашей версии Excel.
Новый, более простой ответ:
Вы можете использовать формулу динамического массива, чтобы проверить, является ли каждый элемент строго меньшим, чем элемент в другом массиве.
=AND((A1:I1) < (B1:J1))
Это просто и понятно, и по сути означает «есть A1 < B1
и B1 < C1
так далее до конца массива».
Хитрость в том, что мы смещаем два списка, поэтому мы сравниваем каждый элемент со следующим значением в исходном массиве.
Итак, мы сравниваем A1:I1
: B1:J1
первый массив — от первого элемента до предпоследнего, а второй массив — от второго элемента до последнего.
Оригинальный ответ:
Если список может быть упорядоченным >=
(в отличие от строгого >
) - то есть если 1, 2, 3, 3, 4
также допустимо.
Вы можете сортировать значения и сравнивать отсортированные значения с исходными значениями.
Если исходные значения расположены в порядке возрастания, то отсортированный список будет равен исходному списку.
Это позволит отсортировать данные по столбцам, сравнить каждое значение, а затем сформировать AND()
список с одним результатом:
=AND(SORT(A1:J1,1,1,TRUE)=A1:J1)
Если вы сравниваете один столбец данных, то это немного проще:
=AND(SORT(A1:A10)=A1:A10)