Примеры. Скажем, у меня есть несколько одномерных массивов, таких как A, B и C:
A B C
--- --- ---
2 4 99
3 5 37
4 6 42
7
Я хочу использовать формулу для заполнения каждого из этих массивов (которые являются именованными диапазонами), чтобы они имели одинаковое количество строк. (Отредактировано, чтобы дать более полное объяснение:) Я также хотел бы иметь возможность сдвигать начальную позицию каждого массива на указанное количество строк. Вот пример вывода, где я сдвигаю A на два, B на три и C на одну позицию:
A' B' C'
--- --- ---
0 0 0
0 0 99
2 0 37
3 0 42
4 4 0
0 5 0
0 6 0
0 7 0
Таким образом, «формула» (на самом деле комбинация нескольких существующих стандартных формул) для заполнения одного из массивов будет фактически иметь четыре входа: имя/диапазон исходного массива, количество значений для заполнения в начале исходного массива, число для заполнения в конце и значение заполнения (т. е. 0, NA() и т. д.).
Первоначальный подход. Моей первой попыткой было объединить три части массива (начальный массив заполнения, исходный массив и конечный массив заполнения) в один массив следующим образом:
=INDIRECT("{" & IF(_NPadBegin>0, REPT(_PadVal&",", _NPadBegin-1) & _PadVal&",", "") & _ArrayName & IF(_NPadEnd>0, "," & REPT(_PadVal&",", _NPadEnd-1) & _PadVal, "") &"}")
(где переменные с подчеркиванием являются именованными диапазонами для четырех входов)
Однако построить такой массив не представляется возможным. Я искал другие методы объединения одномерных массивов с использованием формулы, но ничего не нашел.
Другой подход может заключаться в создании массива окончательной желаемой длины и первоначальном заполнении его значением заполнения. Например, создайте массив A' с восемью строками, равными 0. (Я могу выполнить этот шаг в динамической формуле.) Затем вы можете перезаписать значения в этом инициализированном массиве исходным массивом, убедившись, что исходный массив сдвинут к правильное расположение. Например, перезапишите значения 0 в строках со 2 по 4 строки A' значениями A. (Я не могу понять, как сделать этот второй шаг...)
Общие сведения. У меня есть несколько одномерных массивов данных (сгенерированных с использованием динамических именованных диапазонов), которые я хотел бы отобразить вместе на одной линейной диаграмме. Однако массивы имеют разную длину, поэтому мне нужно заполнить каждый массив определенным количеством значений NA() в начале/конце массива. Их также необходимо «выстроить» на основе индекса.
Вероятно, было бы несложно добиться этого в VBA, но я бы предпочел (не определяемое пользователем) решение на основе формул.