#excel #excel-formula #office365
#excel #excel-формула #office365
Вопрос:
Я пытаюсь помочь студенту с действительно простой формулой, и у меня возникают проблемы с пониманием контекста решения.
Мы начинаем с небольшого списка значений в столбцах A и B и другого списка адресов в столбце C, которые указывают на значения в столбце A или B:
Цель состоит в том, чтобы получить элементы в столбце A или B в порядке, указанном в столбце C.
Ее первой попыткой было использовать:
=INDIRECT(C1:C5)
Поскольку мы используем Excel 365, это привело к динамическому распределению #VALUE!
ошибок. Я объяснил, что это связано INDIRECT()
с тем, что функция worksheet не может принимать ввод массива, и если мы используем строковый ввод, например =INDIRECT("C1:C5")
, все, что мы получаем, это указатели адресов, а не сами значения.
Я предложил =IF(ROWS($1:1)<=COUNTA(C:C),INDIRECT(C1),"")
и скопировал вниз вручную. Она ушла и вернулась позже, чтобы сказать мне, что они нашли способ заставить INDIRECT()
работать с вводом массива:
=SUMIF(INDIRECT(C1:C5),"<>")
что ДЕЙСТВИТЕЛЬНО работает! Чего мы не понимаем, так это:
- Почему включение нерабочей формулы в
SUMIF()
заставляет ее работать - Почему
SUMIF()
возвращается массив, а не одно значение
Любые пояснения или ссылки будут оценены.
Комментарии:
1. Он всегда возвращал массив. Я знаю, что вы сделали что-то похожее на
=SUMPRODUCT(COUNTIF(A:A,{"Sally","George"}))
COUNTIF
возврат массива из двух элементов. Один — количествоSally
, а другойGeorge
SUMPRODUCT
— их суммы. Ваш SUMIF ничем не отличается. Они принимают массив в качестве критерия, а не диапазон. SUMIF просто видит первый как критерий, так и диапазон сумм, когда нет третьей записи. Что касается того, почему он работает с суммами / графами. Я понятия не имею, но я использовал это много раз во многих ответах. Я думаю, даже на один из ваших вопросов о суперпользователе.2. да: superuser.com/questions/1547676 /…
3. Интересно то, что вплоть до того, что sumif возвращает массив, он показывает массив ошибок, если вы пройдете.
4. @ScottCraner Поведение
SUMIF()
сINDIRECT()
внутренней частью полностью отличается от поведенияSUMIF()
, если оно относится к внешнему диапазону ячеек ……… Я просто этого не понимаю.5. Не вникая в код, я тоже этого не делаю. Но это отличная петля, которую я часто использую.