Массив разделить на массив excel

Разделить два массива и просуммировать по условию

dadmarat

Дата: Пятница, 17.01.2014, 15:43 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 47


Репутация:

3

±

Замечаний:
0% ±


Excel 2010

Есть два массива, которые нужно разделить каждый элемент разделить на соответсвующий другому массиву и просумировать результаты. Подошла бы функция , но елементы, на которые делим, могут быть «» или 0 и тогда данная функция выдает ошибку деления на ноль.
Нашел решения черер формулу массива

Код

{=СУММ(ЕСЛИ((«массив2»)<>0;(«массив1»)/(«массив2»)))}

,
но где-то видел решение такой же проблемы через функцию СУММПРОИЗВ.
Как я понял, данная функция иммет дополнительные возможности не описаные в базовых синтаксисах.

Файл пример приолагаю, вдруг понадобится.


—————-
I can do it!
—————-

 

Ответить

китин

Дата: Пятница, 17.01.2014, 15:57 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

ну дык почти так же.формула массива

Код

=СУММПРОИЗВ((ЕСЛИ((B2:B18)<>0;(A2:A18)/(B2:B18))))


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Сообщение отредактировал китинПятница, 17.01.2014, 15:57

 

Ответить

dadmarat

Дата: Пятница, 17.01.2014, 16:00 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 47


Репутация:

3

±

Замечаний:
0% ±


Excel 2010

Возможно есть решение, где СУММПРОИЗВ вводится, как обычная формула и там условия через * вводилось? Синтаксис подходящий найти не могу.

Или я, возможно, ошибаюсь.


—————-
I can do it!
—————-

 

Ответить

dadmarat

Дата: Пятница, 17.01.2014, 17:00 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 47


Репутация:

3

±

Замечаний:
0% ±


Excel 2010

Нашел вот такой вот синтаксис :

Код

=СУММПРОИЗВ((условие1)*(условие2)*(что_суммировать))

Как я понимаю, он не применим в данных условиях. Она суммирует диапазон по нескольким условиям, а не суммирует произведение по условиям.


—————-
I can do it!
—————-

 

Ответить

Pelena

Дата: Пятница, 17.01.2014, 17:37 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Вариант с СУММПРОИЗВ() не массивная

Код

=СУММПРОИЗВ(((B2:B18<>0)*A2:A18)/((B2:B18=0)+B2:B18))


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

AndreTM

Дата: Пятница, 17.01.2014, 17:46 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Пока собирался ответить — Лена опередила :)
Только одни скобки — лишние:

Код

=СУММПРОИЗВ((B1:B9<>0)*A1:A9/((B1:B9=0)+B1:B9))

Как работает:
+ в условиях это аналог ИЛИ (как * — аналог И).
Таким образом:
— Чтобы в знаменателе было либо само значение из второго массива, либо не ноль (чтобы не было ошибки деления). Мы сравниваем элемент с нулём и получаем массив, где на «ненулевых» местах стоят нули, а на «нулевых» — единички. Если теперь сложить этот массив с исходным = то получим массив, где нули заменены на единички.
— Чтобы формула не учитывала те значения из второго массива, где мы заменили нули на единички — мы домножаем числитель на ноль для этих значений. Вернее, мы домножаем числитель на единичку для тех значений, которые нужно учитывать, и на ноль — для тех, которые не нужно. В результате в числителе мы имеем массив из значений, которые нужно поделить, и нулей.
— После этого мы либо делим число на число, либо ноль на единичку :) , а затем складываем результаты…


Skype: andre.tm.007
Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTMПятница, 17.01.2014, 17:55

 

Ответить

dadmarat

Дата: Пятница, 17.01.2014, 17:47 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 47


Репутация:

3

±

Замечаний:
0% ±


Excel 2010

Pelena, AndreTM, спасибо. Правда не совсем понятно, как работает. Если можете напишите, пожалуйста, синтаксис/алгоритм работы данной формулы.


—————-
I can do it!
—————-

Сообщение отредактировал dadmaratПятница, 17.01.2014, 17:48

 

Ответить

Pelena

Дата: Пятница, 17.01.2014, 17:57 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Если элемент второго массива не равен нулю, B2:B18<>0 даёт ИСТИНА, т.е. 1, а B2:B18=0 даёт ЛОЖЬ, т.е. 0. В итоге эти значения ни на что не влияют. Если же элемент второго массива равен нулю, то все наоборот, в итоге получаем 0/1, т.е. 0

Чтобы посмотреть работу формулы по частям, можно выделить часть формулы в строке формул и нажать F9. Чтобы вернуть прежний вид формулы ESC


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

dadmarat

Дата: Пятница, 17.01.2014, 18:03 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 47


Репутация:

3

±

Замечаний:
0% ±


Excel 2010

+ в условиях это аналог ИЛИ (как * — аналог И).

Именно, то что я хотел услышать.

Чтобы посмотреть работу формулы по частям, можно выделить часть формулы в строке формул и нажать F9. Чтобы вернуть прежний вид формулы ESC

Так же этого не знал.

Спасибо, за участие. Много что стало на свои места.


—————-
I can do it!
—————-

 

Ответить

Разбиение двумерного массива на несколько массивов, группируя строки по заданному столбцу

  • Массивы
  • Сортировка
  • Разное

Функция принимает в качестве параметра arr двумерный массив, и разбивает его на несколько массивов, группируя строки по значению столбца SplitColumn&

Сколько есть уникальных значений в столбце SplitColumn&, удовлетворяющих маске Mask$, — столько двумерных массивов будет возвращено функцией в виде коллекции

Например, если есть исходный массив размерами 100*5, в котором во втором столбце есть 3 разных значения,
то функция SplitArray(arr, 3) вернёт коллекцию из 3 элементов — массивов размерами 25*5, 7*5, 68*5

Чтобы откинуть строки с пустыми значениями, можно применить маску «?*»
Можно взять только строки со сзначениями, начинающимися с цифры, содержащими текст «txt», — в этом случае, в параметр Mask$ надо передать строку «#*txt*»

Пример использования функции разделения массивов на несколько:

Sub test_SplitArray()
    ' считываем массив из 8 столбцов с активного листа
    arr = Range(Range("a2"), Range("a" & Rows.Count).End(xlUp)).Resize(, 8).Value
 
    ' разбиваем массив на несколько, по уникальным непустым значениям из первого столбца
    Dim coll As Collection: Set coll = SplitArray(arr, 1, "?*")
 
    ' перебираем отдельные массивы, выводим результаты
    For Each sarr In coll
        Debug.Print "Количество строк: " & UBound(sarr), "значение: """ & sarr(1, 1) & """"
    Next
End Sub

Код функции SplitArray:

Function SplitArray(ByRef arr, ByVal SplitColumn&, Optional ByVal Mask$ = "*") As Collection
    On Error Resume Next: Err.Clear
    ' Функция принимает в качестве параметра arr двумерный массив,
    ' и разбивает его на несколько массивов, группируя строки по значению столбца SplitColumn&
    ' Сколько есть уникальных значений в столбце SplitColumn&, удовлетворяющих маске Mask$,
    ' - столько двумерных массивов будет возвращено функцией в виде коллекции
    Dim UB&: UB& = UBound(arr, 2)
    If Err <> 0 Or Not IsArray(arr) Then MsgBox "Исходные данные не являются двумерным массивом!", vbCritical, _
       "Ошибка в функции SplitArray": Exit Function
    If UB& < SplitColumn& Then MsgBox "В исходном массиве нет столбца с номером «" & SplitColumn& & "»!", vbCritical, _
       "Ошибка в функции SplitArray": Exit Function
 
    Dim coll As New Collection, UniqueValues As Object, txt$, i&, j&, uv, ind&, sarr
    Set SplitArray = New Collection
    Set UniqueValues = CreateObject("scripting.dictionary")
 
    ' ищем уникальные значения, подсчитывая количество строк по каждому уникальному значению
    For i = LBound(arr) To UBound(arr)
        txt$ = Trim$(arr(i, SplitColumn&))
        If txt$ Like Mask$ Then UniqueValues.Item(txt$) = Val(UniqueValues.Item(txt$)) + 1
    Next i
    For Each uv In UniqueValues.Keys        ' перебираем все найденные уникальные значения
        ind& = 0: ReDim sarr(1 To UniqueValues.Item(uv), LBound(arr, 2) To UBound(arr, 2))
        For i = LBound(arr) To UBound(arr)
            If Trim$(arr(i, SplitColumn&)) = uv Then
                ind& = ind& + 1        ' переносим очередную подходящую строку в подмассив
                For j = LBound(arr, 2) To UBound(arr, 2): sarr(ind&, j) = arr(i, j): Next j
            End If
        Next i
        SplitArray.Add sarr
    Next
End Function
  • 13741 просмотр

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

 

Добрый день.
Есть массив одномерный с числами от 1 до 30.
Нужно его разбить на 5 частей по 7 элементов, соответственно.
Подскажите как это сделать?

 

Udik

Пользователь

Сообщений: 372
Регистрация: 07.03.2016

excel 2016х64 Контакты в профиле

Массив где? разбивать куда?

Арфы — нет, возьмите бубен.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

нет, уж…
это Вы подскажите как ряд 1, 2, 3, … 30
разбить на 5 частей по 7 шт.
перечислите состав каждой из этих частей

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

BotExcel

Пользователь

Сообщений: 65
Регистрация: 23.03.2016

Наверно массив до 35 :)

 

Udik

Пользователь

Сообщений: 372
Регистрация: 07.03.2016

excel 2016х64 Контакты в профиле

Не ребята вы неправы  :) Там же не написано, что элементов массива 30,  просто каждый элемент находится в отрезке от 1 до 30. А размерность массива не указана.

Арфы — нет, возьмите бубен.

 

Владимир Л

Пользователь

Сообщений: 131
Регистрация: 01.01.1970

#7

28.09.2016 18:33:43

Цитата
BotExcel написал: Наверно массив до 35

вообще массив с 30 элементами = числами месяца, значения элементов нужно перенести в массив с 5 подмассивами по 7 элементов каждый.
просто в последнем подмассиве часть элементов останутся пустыми.

 

1 массив — 1,2,3,4,5,6,7
2 массив — 8,9,10,11,12,13,14
3 массив — 15,16,17,18,19,20,21
4 массив — 22,23,24,25,26,27,28
5 массив — 29,30, , , , ,
Ну вроде не сложно. ;)

 

уже гораздо лучше. в феврале 5-й диапазон может быть весь пусто, так?
«есть массив» ???
а где он есть? это реально массив в VBA?
это диапазон ячеек на листе? эти ячейки расположены в строку, в колонку?
«разбить» это как? после каждого 7-го элемента нарисовать жирную линию? куда-то и в каком-то порядке? куда и в каком?
и разбить 30 по 7 — это случайно не месяц рзбить по неделям?

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Владимир Л

Пользователь

Сообщений: 131
Регистрация: 01.01.1970

#10

28.09.2016 18:45:29

Цитата
Сергей Беляев написал: 1 массив — 1,2,3,4,5,6,7

Да, так, только у меня уже есть 1 массив с 30 числами, нужно разбить его именно. Вместо чисел в подобном массиве — время начала/конца работы.

Цитата
Ігор Гончаренко написал: уже гораздо лучше. в феврале 5-й диапазон может быть весь пусто, так?

Да, в vba я значения из строки пишу в массив.

Изменено: Владимир Л28.09.2016 19:01:44

 

нужно заполнить табличку
У меня есть 5 одномерных массивов: с числами, с рабочими часами, ночными, началом и окончанием смены.

Изменено: Владимир Л28.09.2016 18:54:36

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

ОФФ.
У Вас столбцов на весь месяц не хватает?!  8-0 :). Смысл в ТАКОЙ организации графика?

Согласие есть продукт при полном непротивлении сторон.

 

Владимир Л

Пользователь

Сообщений: 131
Регистрация: 01.01.1970

#13

28.09.2016 18:56:57

Цитата
Sanja написал: есь месяц не хватает?!

нужно со сдвигом заполнять, я в php это делал, там функция есть разбиения на подмассивы, и потом каждый подмассив выводит со сдвигом.

 

Владимир Л

Пользователь

Сообщений: 131
Регистрация: 01.01.1970

#14

29.09.2016 09:14:02

Вот

Код
Sub main()
Dim m
m = q_Split(Array("раз", "два", "три"), 2)
End Sub
 
Function q_Split(arr, u&)
Dim a(), aa()
Dim n As Long, nn As Long, i As Long, j As Long
ReDim a(UBound(arr)  u)
For i = 0 To UBound(a)
  For j = 0 To u - 1
    If n > UBound(arr) Then
      Exit For
    Else
      ReDim Preserve aa(j)
      aa(j) = arr(n)
      n = n + 1
    End If
  Next j
  a(i) = aa
Next i
q_Split = a
End Function

Массив функций Excel позволяет решать сложные задачи в автоматическом режиме одновременно. Те, которые выполнить посредством обычных функций невозможно.

Фактически это группа функций, которые одновременно обрабатывают группу данных и сразу выдают результат. Рассмотрим подробно работу с массивами функций в Excel.

Виды массивов функций Excel

Массив – данные, объединенные в группу. В данном случае группой является массив функций в Excel. Любую таблицу, которую мы составим и заполним в Excel, можно назвать массивом. Пример:

Пример массивов.

В зависимости от расположения элементов различают массивы:

  • одномерные (данные находятся в ОДНОЙ строке или в ОДНОМ столбце);
  • двумерные (НЕСКОЛЬКО строк и столбцов, матрица).

Одномерные массивы бывают:

  • горизонтальными (данные – в строке);
  • вертикальными (данные – в столбце).

Примечание. Двумерные массивы Excel могут занимать сразу несколько листов (это сотни и тысячи данных).

Примеры двумерных массивов.

Формула массива – позволяет обработать данные из этого массива. Она может возвращать одно значение либо давать в результате массив (набор) значений.

С помощью формул массива реально:

  • подсчитать количество знаков в определенном диапазоне;
  • суммировать только те числа, которые соответствуют заданному условию;
  • суммировать все n-ные значения в определенном диапазоне.

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



Синтаксис формулы массива

Используем формулу массива с диапазоном ячеек и с отдельной ячейкой. В первом случае найдем промежуточные итоги для столбца «К оплате». Во втором – итоговую сумму коммунальных платежей.

  1. Выделяем диапазон Е3:Е8.
  2. В строку формул вводим следующую формулу: =C3:C8*D3:D8.
  3. Формула промежуточных итогов.

  4. Нажимаем одновременно клавиши: Ctrl + Shift + Enter. Промежуточные итоги посчитаны:
  5. Результат вычисления промежуточных итогов.

Формула после нажатия Ctrl + Shift + Enter оказалась в фигурных скобках. Она подставилась автоматически в каждую ячейку выделенного диапазона.

Если попытаться изменить данные в какой-либо ячейке столбца «К оплате» — ничего не выйдет. Формула в массиве защищает значения диапазона от изменений. На экране появляется соответствующая запись:

Ошибка.

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

  1. Выделяем ячейку Е9 (напротив «Итого»).
  2. Вводим формулу вида: =СУММ(C3:C8*D3:D8).
  3. Нажимаем сочетание клавиш: Ctrl + Shift + Enter. Результат:
  4. Итог одной формулой.

Формула массива в данном случае заменила две простые формулы. Это сокращенный вариант, вместивший всю необходимую информацию для решения сложной задачи.

Аргументы для функции – одномерные массивы. Формула просматривает каждый из них по отдельности, совершает заданные пользователем операции и генерирует единый результат.

Рассмотрим ее синтаксис:

Синтаксис массива функций.

Функции работы с массивами Excel

Предположим, в следующем месяце планируется увеличение коммунальных платежей на 10%. Если мы введем обычную формулу для итога =СУММ((C3:C8*D3:D8)+10%), то вряд ли получим ожидаемый результат. Нам нужно, чтобы каждый аргумент увеличился на 10%. Чтобы программа поняла это, мы используем функцию как массив.

Сложный массив.

  1. Посмотрим, как работает оператор «И» в функции массива. Нам нужно узнать, сколько мы платим за воду, горячую и холодную. Функция: . Итого – 346 руб.
  2. Выборочный итог.

  3. Функция «Сортировки» в формуле массива. Отсортируем суммы к оплате в порядке возрастания. Для списка отсортированных данных создадим диапазон. Выделим его. В строке формул вводим . Жмем сочетание Ctrl + Shift + Enter.
  4. Сортировка итогов.

  5. Транспонированная матрица. Специальная функция Excel для работы с двумерными массивами. Функция «ТРАНСП» возвращает сразу несколько значений. Преобразует горизонтальную матрицу в вертикальную и наоборот. Выделяем диапазон ячеек, где количество строк = числу столбцов в таблице с исходными данными. А количество столбцов = числу строк в исходном массиве. Вводим формулу: . Получается «перевернутый» массив данных.
  6. Перевернутый массив данных.

  7. Поиск среднего значения без учета нулей. Если мы воспользуемся стандартной функцией «СРЗНАЧ», то получим в результате «0». И это будет правильно. Поэтому вставляем в формулу дополнительное условие: . Получаем:
  8. Условие в массиве.

Скачать примеры массива функций

Распространенная ошибка при работе с массивами функций – НЕ нажатие кодового сочетания «Ctrl + Shift + Enter» (никогда не забывайте эту комбинацию клавиш). Это самое главное, что нужно запомнить при обработке больших объемов информации. Правильно введенная функция выполняет сложнейшие задачи.

Пример формулы массива в Excel
Пример формулы массива
  • Что такое формула массива в Excel
  • Массивы в Excel
    • Отличие массивов от диапазонов в Excel
    • Размерность массивов
    • Виды массивов
  • Методы создания массивов
    • Массив констант, созданный вручную
    • Именованный массив констант
    • С помощью функций
    • С помощью математических операторов
    • С помощью операторов сравнения
    • С помощью других массивов
    • С помощью комбинаций указанных методов
  • Вывод массива на лист
  • Взаимодействие функций Excel с массивами
  • Формулы массива – примеры формул

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

Не знаю, новичок вы в Excel или уже опытный пользователь, но коль судьба привела вас на эту страницу, в ходе прочтения вы:

  • узнаете все о формулах массива;
  • увидите множество примеров таких формул;
  • сможете начать активно их применять на практике.

Поехали!

Формула массива (array formula) – это такая формула, в процессе вычисления которой создается один или несколько массивов. При этом не обязательно как результат вычисления, но и как промежуточный этап.

Будьте на 100% уверены: если формула

  • принимает массив на вход,
  • создает его как промежуточную сущность
  • или выводит как результат вычислений

– это формула массива.

Слишком очевидно и все еще непонятно? Не беда – читаем далее.

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

Массивы в Excel

Массив (array) – это фиксированный набор элементов с фиксированным порядком. Иными словами, все элементы массива, включая их положение в нем, являются его неотъемлемой частью, их порядок и количество нельзя изменить.

Отличие массивов от диапазонов в Excel

В отличие от массива, диапазон (range) – это просто метод адресации к ячейкам в Excel, никак не связанный с самим их содержимым.

Между ячейками диапазона можно вставить дополнительные столбцы и строки, сделав его длиннее и шире, а ссылка на такой диапазон изменится автоматически.

Содержимое диапазона также можно свободно сортировать, если в нем нет объединенных ячеек.

Если же на лист Excel выведен массив, ни сортировка строк, ни вставка строк и столбцов в середину диапазона, в который он выведен, не возможна – это нарушило бы само его определение.

При попытке изменения порядка элементов массива Excel выдаст ошибку. К сожалению, она не очень информативна и не сообщает, какой массив или массивы имеются в виду. Текст ошибки:

Нельзя изменить часть массива.

Ошибка "Нельзя изменить часть массива" в Excel

Ошибка Excel при попытке нарушить целостность массива

Размерность массивов

Как массивы, так и диапазоны в Excel могут быть одномерными (вектор), двумерными (таблица) и трехмерными (многослойная таблица).

Одномерные массивы (векторы) в свою очередь могут быть вертикальными и горизонтальными.

два одномерных и один двумерный массив

Одномерные и двумерные массивы в Excel

Трехмерные массивы – довольно редко используемая на практике сущность.

Виды массивов

По типам элементов в них:
По типу данных –

  • числовой массив (массив чисел)
  • строковый массив (текстовые значения)
  • булевый массив (значения ИСТИНА-ЛОЖЬ)
  • смешанного типа

По изменяемости элементов –

  • массив констант,
  • вычисляемый массив

Методы создания массивов

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

Массив констант, созданный вручную

Одномерные и двумерные массивы констант можно создавать вручную и сразу выводить на лист безо всяких дополнительных операций над ними.

При этом разделителем между элементами слева направо является точка с запятой, а разделителем строк – двоеточие.

Двумерные массивы вводятся построчно, т.е. сначала первая строка через точку с запятой, далее двоеточие, вторая строка через точку с запятой, и так далее.

Именованный массив констант

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

Массив цифр как в примере ниже, поможет быстро найти цифры в текстовых ячейках.

создание именованного массива констант на примере цифр
Создаем именованный массив в Excel

Это позволит больше не вводить его вручную, а обращаться к нему по его имени. Более того, Microsoft Excel помогает при их вводе всплывающими подсказками.

вывод именованного массива на лист

Используем именованный массив

С помощью функций

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

Единственное условие для создания массива с помощью функции – функция не должна обладать агрегирующим свойством. Например, СУММ, СРЗНАЧ не создадут массив при обращении к диапазону.

На этом сайте есть статья – как дописать символ, слово или текст к нескольким ячейкам. Там рассматриваются несколько способов, в том числе без создания дополнительного столбца. Но вот еще один – с помощью функции СЦЕПИТЬ и формулы массива:

Добавляем текст в ячейки формулой массива с функцией СЦЕПИТЬ

Формула массива с функциями СЦЕПИТЬ и СИМВОЛ

Кавычки-ёлочки в этой формуле нам помогает создать функция СИМВОЛ.

С помощью математических операторов

Достаточно применить любую из математических операций к диапазону – и будет создан массив, аналогичный по размерам.

Массивы в Excel, полученные с помощью математических операторов

С помощью операторов сравнения

Аналогично математическим операторам, массивы создаются при сравнении диапазонов с константой или значением ячейки. Результатом операции сравнения являются значения ИСТИНА или ЛОЖЬ.

Массивы в Excel, полученные с помощью операторов сравнения

С помощью других массивов

В двух предыдущих примерах массивы создавались на основе взаимодействия диапазона ячеек и некой константы.

Но можно создать массив и по принципу наоборот – на основе одной ячейки, произведя ее взаимодействие (операторами или функциями) с массивом констант.

Размер результирующего массива в таком случае будет аналогичен размеру массива констант.

Еще раз обратите внимание на разделители строк и столбцов в массивах. Столбцы разделяются точкой с запятой, строки – двоеточием.

С помощью комбинаций указанных методов

Как вы уже догадались, возможности фантазии безграничны – можно строить какие угодно комбинации перечисленных выше методов, производя операции над массивами и диапазонами.

Вывод массива на лист

Для корректного вывода массива на лист нужно выделить диапазон ячеек эквивалентной размерности и размера, использовать метод создания массива (вручную или формулой), и нажать

Ctrl+Shift+Enter

Если выделить недостаточное количество ячеек – будут выведены не все элементы массива, а только те, что соответствуют по порядку.
Если выделить избыточное количество – лишние ячейки выдадут ошибку #Н/Д.

На примере результирующий массив должен быть размером 5*5, но перед вводом формулы массива был выделен диапазон 6*6.

Ошибка НД при несоответствии размера диапазона и массива

Взаимодействие функций Excel с массивами

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

Однако, есть ряд функций, называемых агрегирующими. Если им на вход подается диапазон или массив, они возвращают единственное результирующее значение. Самая популярная – функция СУММ. Но есть и множество других.

Из раздела математических функций к таковым также относятся ПРОИЗВЕД, СУММПРОИЗВ, СУММЕСЛИ, СУММЕСЛИМН.

Практически все статистические функции по природе берут на вход диапазон или массив и возвращают одно число. Наиболее популярные из них – СРЗНАЧ, МИН, МАКС, СЧЁТ, СЧЁТЗ, СЧЁТЕСЛИ.

Среди логических функций агрегирующим свойством обладают функция И и функция ИЛИ.

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

  • учитывают весь массив
  • выводят одно значение

ВЫБОР, ВПР, ГПР, ИНДЕКС, ПОИСКПОЗ – эти функции поиска используются наиболее часто.

Формулы массива – примеры формул

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

Приступаем к практическим шагам:

Учимся формулам массива 1/4:

Как создать алфавит в Excel

Like this post? Please share to your friends:
  • Массив поиска совпадений в excel
  • Массив констант в excel это
  • Массив по ячейкам excel vba
  • Массив интервалов в excel это
  • Массив по убыванию excel