Задача 1: есть 2 одномерных массива известного одинакового размера, каждый из которых получается некоторой подтяжкой данных через ВПР. Нужно их друг на друга умножить, а ячейки полученного итогового массива сложить. Через несколько вспомогательных массивов решается элементарно, никаких проблем нет.
Задача 2: решить задачу 1 без использования вспомогательных массивов, т.е. в одной ячейке получить сразу необходимую конечную сумму, применив все необходимые массивные операции.
Пытаюсь решить задачу 2 впихнув все действия в одну массивную формулу. Если конечный массив состоит из 1 ячейки, то выдаётся некорректный результат (первое значение итогового массива, полученного в результате решения задачи 1). Если тот же самый массив размножаем на 2 и сколь угодно более ячеек, то в каждой из этих ячеек выдаётся корректный результат.
Создал элементарный чисто модельный пример с этой ситуацией. Подскажите, пожалуйста, что не так с моей одноячеечной массивной суммой?
День добрый!
Бьюсь головой об массивную сумму.
Задача 1: есть 2 одномерных массива известного одинакового размера, каждый из которых получается некоторой подтяжкой данных через ВПР. Нужно их друг на друга умножить, а ячейки полученного итогового массива сложить. Через несколько вспомогательных массивов решается элементарно, никаких проблем нет.
Задача 2: решить задачу 1 без использования вспомогательных массивов, т.е. в одной ячейке получить сразу необходимую конечную сумму, применив все необходимые массивные операции.
Пытаюсь решить задачу 2 впихнув все действия в одну массивную формулу. Если конечный массив состоит из 1 ячейки, то выдаётся некорректный результат (первое значение итогового массива, полученного в результате решения задачи 1). Если тот же самый массив размножаем на 2 и сколь угодно более ячеек, то в каждой из этих ячеек выдаётся корректный результат.
Создал элементарный чисто модельный пример с этой ситуацией. Подскажите, пожалуйста, что не так с моей одноячеечной массивной суммой?$erge
Ааа )) Формула, конечно, работает, равно как и моя массивная сумма по вспомогательному массиву. Но задача в том, чтобы не пользоваться никакими вспомогательными массивами, рассчитанными в первом, втором и третьем действии, а сделать формулу, которая будет считать готовую сумму прямо по исходным данным.
Ааа )) Формула, конечно, работает, равно как и моя массивная сумма по вспомогательному массиву. Но задача в том, чтобы не пользоваться никакими вспомогательными массивами, рассчитанными в первом, втором и третьем действии, а сделать формулу, которая будет считать готовую сумму прямо по исходным данным.$erge
А кто-нибудь понял почему моя неправильная массивная сумма, вбитая в 1 ячейку даёт неправильный результат, а будучи размноженной в массив от 2 элементов (неважно в каком количестве) даёт правильный результат?
А кто-нибудь понял почему моя неправильная массивная сумма, вбитая в 1 ячейку даёт неправильный результат, а будучи размноженной в массив от 2 элементов (неважно в каком количестве) даёт правильный результат?$erge
Самым удобным вариантом оказалось матричное умножение. Разобрался с МУМНОЖ, понял, что Ч помогает поправить формат (правда не понял что изначально не так было с этим форматом). Пытаюсь применить к своему рабочему файлу. Получается наполовину.
Вычистил из рабочего файла всё лишнее, оставил только нужные ссылки. Обвёл в рамку сам расчёт на листе "Свод"
Смысл следующий. Рассчитываю вспомогательные массив1 и массив2. Считаю их произведение без массивов. Матрично массивно их умножаю, всё ок. В матричном умножении меняю ссылку на массив2 на формулу массива2. Всё ок. В матричном умножении меняю ссылку на массив1 на формулу массива1. Ошибка! Хотя делаю вроде бы всё то же самое, что для массива2. Фунцию Ч пытался переставить в разные места - без толку.
Самым удобным вариантом оказалось матричное умножение. Разобрался с МУМНОЖ, понял, что Ч помогает поправить формат (правда не понял что изначально не так было с этим форматом). Пытаюсь применить к своему рабочему файлу. Получается наполовину.
Вычистил из рабочего файла всё лишнее, оставил только нужные ссылки. Обвёл в рамку сам расчёт на листе "Свод"
Смысл следующий. Рассчитываю вспомогательные массив1 и массив2. Считаю их произведение без массивов. Матрично массивно их умножаю, всё ок. В матричном умножении меняю ссылку на массив2 на формулу массива2. Всё ок. В матричном умножении меняю ссылку на массив1 на формулу массива1. Ошибка! Хотя делаю вроде бы всё то же самое, что для массива2. Фунцию Ч пытался переставить в разные места - без толку.$erge
А кто-нибудь понял почему моя неправильная массивная сумма, вбитая в 1 ячейку даёт неправильный результат, а будучи размноженной в массив от 2 элементов (неважно в каком количестве) даёт правильный результат?
Точно не знаю, но могу предположить. Такие функции, как ВПР, ИНДЕКС (и многие другие) не могут возвращать массив значений, если им подставлять массив аргументов. Например, ВПР({1;2;3};диапазон;2) не может вернуть массив значений, она возвращает только одно значение, даже если вводится как формула массива в одну ячейку. Если же ее ввести как формулу массива в несколько ячеек, то срабатывает другой механизм вычислений, и на выходе имеем массивный результат из трех значений.
ВПР, вводимую в одну ячейку можно обмануть, записав формулу как ВПР(Ч(ИНДЕКС({1;2;3};));диапазон;2), при этом расчет ведется, если бы формула вводилась как формула массива в несколько ячеек сразу.
А кто-нибудь понял почему моя неправильная массивная сумма, вбитая в 1 ячейку даёт неправильный результат, а будучи размноженной в массив от 2 элементов (неважно в каком количестве) даёт правильный результат?
Точно не знаю, но могу предположить. Такие функции, как ВПР, ИНДЕКС (и многие другие) не могут возвращать массив значений, если им подставлять массив аргументов. Например, ВПР({1;2;3};диапазон;2) не может вернуть массив значений, она возвращает только одно значение, даже если вводится как формула массива в одну ячейку. Если же ее ввести как формулу массива в несколько ячеек, то срабатывает другой механизм вычислений, и на выходе имеем массивный результат из трех значений.
ВПР, вводимую в одну ячейку можно обмануть, записав формулу как ВПР(Ч(ИНДЕКС({1;2;3};));диапазон;2), при этом расчет ведется, если бы формула вводилась как формула массива в несколько ячеек сразу.MCH
Так и не поняла, какую из предложенных формул Вы пытаетесь использовать?
Я пытаюсь использовать массивное матричное умножение. Для моего случая оно идеально подходит. Но как видно из файла, приложенного к сообщению в 11:05 не весь требуемый расчёт удаётся завести в МУМНОЖ().
Так и не поняла, какую из предложенных формул Вы пытаетесь использовать?
Я пытаюсь использовать массивное матричное умножение. Для моего случая оно идеально подходит. Но как видно из файла, приложенного к сообщению в 11:05 не весь требуемый расчёт удаётся завести в МУМНОЖ().
Михаил (MCH) уже объяснил, что функция ВПР в большинстве случаев не возвращает массив, а МУМНОЖ() требует именно массив. Если Вы выделите в строке формул часть с функцией ВПР и нажмете клавишу F9, то увидите, что в первом случае получается массив, а во втором только одно число
Михаил (MCH) уже объяснил, что функция ВПР в большинстве случаев не возвращает массив, а МУМНОЖ() требует именно массив. Если Вы выделите в строке формул часть с функцией ВПР и нажмете клавишу F9, то увидите, что в первом случае получается массив, а во втором только одно числоPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ну я уже понял, что ВПР возвращает число вместо массива. Но опять же во втором моём файле в сообщении 10 от 11:05 очередной пример двойных стандартов обработки данных: подставляю в массивное матричное умножение один массив, полученный через ВПР (а это таки массив) - всё отлично работает. Подставляю другой, полученный через ВПР - не работает, оказывается, что это не массив.
выделите в строке формул часть с функцией ВПР и нажмете клавишу F9, то увидите
Не понял что таким образом можно увидеть?
Ну я уже понял, что ВПР возвращает число вместо массива. Но опять же во втором моём файле в сообщении 10 от 11:05 очередной пример двойных стандартов обработки данных: подставляю в массивное матричное умножение один массив, полученный через ВПР (а это таки массив) - всё отлично работает. Подставляю другой, полученный через ВПР - не работает, оказывается, что это не массив.