Может кто-нибудь, пожалуйста, объясните мне:
- Причина, по которой горизонталь нельзя сравнивать с вертикальными массивами.
Это действительно возможно, и вы также можете сравнить горизонтальные массивы с другими горизонтальными массивами.
Причина, по которой вы получили ошибку, заключается в несоответствии длины массива. Рассмотрим следующие массивы:
Выполнение =SUMPRODUCT(--(B3:D3=F3:G3))
такое же (в английской версии Excel, я не уверен на 100% в разделителях в других версиях) как =SUMPRODUCT(--({"Apple","Lemon","Pear"}={"Apple","Pear"}))
, и в результате получается =SUMPRODUCT(--(Apple=Apple, Lemon=Pear, Pear=???))
, то есть n-й элемент первого массива сравнивается с n-м элементом второго массива, и если нечего сопоставлять - 3-й элемент 1-го массива - это Pear, но для 2-го массива 3-го элемента нет - тогда вы получите N/A
.
Когда вы сравниваете два массива, один вертикальный и один горизонтальный, Excel фактически «расширяет» конечный массив. Рассмотрим следующее (1 строка x 3col и 2row x 1col):
Выполнение =SUMPRODUCT(--(B3:D3=F3:F4))
аналогично =SUMPRODUCT(--({"Apple","Lemon","Pear"}={"Apple";"Pear"}))
и приводит к =SUMPRODUCT(--(Apple=Apple, Lemon=Apple, Pear=Apple; Apple=Pear, Lemon=Pear, Pear=Pear))
. По сути, кажется, что Excel расширил два массива следующим образом (3col x 2row):
Это «расширение» происходит только в том случае, если один массив имеет высоту в 1 строку, а другой - ширину в 1 столбец. Я полагаю, что если вы возьмете массивы с чем-то другим, то Excel вернется к попытке сравнить элемент с «ничем». 'дать N / A (вы можете использовать функцию оценки формул на вкладке Формула, чтобы помочь):
По сути, Excel получает нечто похожее на это, где первый массив умножается на второй массив, давая массив результатов:
Но поскольку последняя строка и последний столбец содержат пробелы, вы получите N / A там.
- Почему типизированный массив будет автоматически обрабатываться как горизонтальный
В вашем вопросе может показаться, что ,
разделяет строки, поэтому с =SUMPRODUCT(--({"Apple","Pear"}=A1:A3))
вы наблюдаете аналогичное сравнение двух строк в моем первом примере, в то время как с =SUMPRODUCT(--({"Apple","Pear"}=TRANSPOSE(A1:A3)))
вы получаете 'расширение' происходит.
Как указано в комментариях, в английской версии Excel ,
разделяет столбцы и ;
разделяет строки, что можно наблюдать в этом простом примере, где я предоставляю массив из 2 строк и 3 столбцов, как показывает Excel {0,0,0;0,0,0}
- Почему в моем тесте гипотез второй типизированный массив был обработан как вертикальный.
TRANSPOSE
просто переключает массив с вертикального на горизонтальный (и наоборот), но в зависимости от того, что вы пытаетесь сделать, вы получите разные результаты в соответствии с первой частью моего ответа, так что вы либо иметь N/A
, когда excel не может сопоставить элемент массива с другим элементом другого массива, или «расширение» двух массивов приводит к большему массиву.