Константы массива не работают должным образом в Excel

Я пытался использовать константу массива для выполнения некоторых вычислений. Я видел этот поток: Константы массива в Excel, но я использую константу массива в формуле так что не актуально. Если я использую =SUM({1,2,3}), результат будет 6, как и ожидалось. Однако, если я использую его с DCOUNT, он не работает должным образом:

      A
 1 Colour
 2 Red
 3 Yellow
 4 Green
 5 Red
 6
 7 Colour
 8 =Red

Результат =DCOUNT(A1:A5;;A7:A8) равен 2.

Результатом =DCOUNT(A1:A5;;{"Colour";"=Red"}) является #Value!. Сообщение об ошибке: Значение, используемое в формуле, имеет неверный тип данных.

Это какое-то несоответствие в MS Excel 2010? Или я что-то не так сделал?

РЕДАКТИРОВАТЬ

Было высказано предположение, что проблема =Red, но ссылка на эта страница с заголовком Элементы, которые можно использовать в константах IMO на самом деле не объясняет это. Однако, если это была проблема, то должно работать следующее:

      A
 1 Number
 2 1
 3 2
 4 3
 5 1
 6
 7 Number
 8 1

Формула =DCOUNT(A1:A5;;A7:A8) дает 2, но обе формулы =DCOUNT(A1:A5;;{"Number";1}) или =DCOUNT(A1:A5;;{"Number";"1"}) по-прежнему дают ту же ошибку, что и мой предыдущий пример.


person Adrian    schedule 28.05.2014    source источник
comment
Формула DCOUNT специально требует диапазона вместо константы массива. То же самое верно для всех формул базы данных.   -  person tigeravatar    schedule 29.05.2014
comment
Есть ли документация, подтверждающая это?   -  person Adrian    schedule 29.05.2014
comment
Ознакомьтесь с разделом Элементы, которые можно использовать в константах, в этой страницы. Думаю, это объясняет, почему нельзя использовать формулу "=Red" внутри массива констант.   -  person Reinier Torenbeek    schedule 29.05.2014
comment
@ReinierTorenbeek, так вы говорите, что хотя =Red является строкой, это должна быть формула для работы DCOUNT? Если бы это было так, я мог бы заменить каждый цвет числом, и это должно работать. Я обновлю сообщение выше.   -  person Adrian    schedule 29.05.2014
comment
@Adrian см. документацию здесь: office.microsoft.com/en -us/excel-help/dcount-HP005209049.aspx Цитата с этой страницы: You can use any range for the criteria argument, as long as the argument includes at least one column label and at least one cell below the column label in which you specify a condition for the column.   -  person tigeravatar    schedule 29.05.2014
comment
Извините, что не помогло... И я не знаю ответа, но мог бы помочь вам с подходами, которые дают один и тот же результат, используя разные функции :-)   -  person Reinier Torenbeek    schedule 30.05.2014
comment
@tigeravatar, {"Number";"1"} содержит метку столбца, т. е. "Number", и одну ячейку ниже метки столбца, т. е. "1".   -  person Adrian    schedule 30.05.2014
comment
Нет, это константа массива, а не диапазон, и как таковая она работать не будет. Это должен быть диапазон, потому что формула базы данных может проверять несколько столбцов (которые представляют собой двумерный массив). Поскольку константы массива являются одномерными массивами, формулы базы данных не могут их использовать. Это должен быть диапазон ячеек. Ваши собственные тесты уже показали, что это так.   -  person tigeravatar    schedule 31.05.2014
comment
@tigeravatar Константы массива могут быть двумерными, как показано здесь. Хотя использование слова range заставляет меня подозревать, что вы на правильном пути, оно все же расплывчато.   -  person Adrian    schedule 04.06.2014


Ответы (1)


Диапазон может использоваться как массив, но массив не может использоваться как диапазон.

Поскольку DCOUNT указывает только параметр диапазона, константа массива является недопустимым типом для этого параметра.

Согласно этим страницам:

они подразумевают, что константы массива должны использоваться с элементами, которые не принимают диапазоны, но:

  1. Либо массив, результатом которого будет одно значение -или-
  2. Отдельные значения, в результате чего получается массив (Ctrl-Shift-Enter должен использоваться для создания массива результатов)

Чтобы сделать то, что я пытался сделать (подсчитать все ячейки, содержащие строку Red в диапазоне A2:A5), я бы сделал что-то вроде этого:

      A
 1 Colour
 2 Red
 3 Yellow
 4 Green
 5 Red

=SUM(IF(A2:A5="Red", 1, 0)), который будет подсчитывать количество красных записей путем создания промежуточного массива {1;0;0;1}, а затем складывать все элементы вместе, в результате чего получится 2.

person Adrian    schedule 03.06.2014