А подскажите, пожалуйста, есть ли способ «вытянуть» в столбец (строку) двумерный массив из памяти, который не выделен диапазоном. Например календарь «в памяти» можно создать формулой типа:
=СЧЁТ(СТРОКА(ДВССЫЛ(A1&":"&A2)))
При A1 = 01.01.21, и A2 = 31.12.21, формула =СУММПРОИЗВ(--(СЧЁТ(СТРОКА(ДВССЫЛ(L8&":"&L9))))) вернёт значение 365.
Хочу из него «вычесть» дни праздников для подсчёта отпусков. Отпуска считаются исходя из всего периода работы (а это может быть много лет). Так как, праздники повторяются каждый год, то слепил из списка праздников ДВУМЕРНЫЙ массив формулой по количеству лет:
01.01.2021 01.01.2022 02.01.2021 02.01.2022 03.01.2021 03.01.2022 04.01.2021 04.01.2022 ... и т.д. ... и т.д.
Для дальнейшей обработки его надо «вытянуть» в столбец. Варианты со счётчиком, вроде СТРОКА(), соответственно, не подходят — массив-то формируется в памяти.
Соответствует ли моя хотелка возможностям Excel или разработчикам ещё надо поработать? :-)
А подскажите, пожалуйста, есть ли способ «вытянуть» в столбец (строку) двумерный массив из памяти, который не выделен диапазоном. Например календарь «в памяти» можно создать формулой типа:
=СЧЁТ(СТРОКА(ДВССЫЛ(A1&":"&A2)))
При A1 = 01.01.21, и A2 = 31.12.21, формула =СУММПРОИЗВ(--(СЧЁТ(СТРОКА(ДВССЫЛ(L8&":"&L9))))) вернёт значение 365.
Хочу из него «вычесть» дни праздников для подсчёта отпусков. Отпуска считаются исходя из всего периода работы (а это может быть много лет). Так как, праздники повторяются каждый год, то слепил из списка праздников ДВУМЕРНЫЙ массив формулой по количеству лет:
01.01.2021 01.01.2022 02.01.2021 02.01.2022 03.01.2021 03.01.2022 04.01.2021 04.01.2022 ... и т.д. ... и т.д.
Для дальнейшей обработки его надо «вытянуть» в столбец. Варианты со счётчиком, вроде СТРОКА(), соответственно, не подходят — массив-то формируется в памяти.
Соответствует ли моя хотелка возможностям Excel или разработчикам ещё надо поработать? :-)tulskias
tulskias, Если вопрос теоретический то двумерный в одномерный массив развертываетя элементарно при размерности R, C Будет R*C элементов. при помощи простых мат операций из последовательности от 1 до R*C на основе кратности получается индекс элемента двумерного массива соответствующий индексу одномерного в зависимости от того что перебираем первым, строки или столбцы. операции int((X-1)/R)+1 и Mod(X-1;R)+1 дадут пары 1,1; 1,2; 1,3 .... 2,1; 2,2; .... в #3 Эти значения просто нужно дополнительно обернуть в одну конструкцию и использовать в индекс
ARR2D - это двумерный массив, ARR1D - это 1 до R*C
Другое дело, нужно ли генерить сперва двумерный массив, или нужно путем сдвига дат по шаблону сразу получить одномерный с нужными датами. o32. Рядом просто проверка 1го и 15го элемента.
[p.s.]рекомендую отказаться от летучих функций. Запись короче, но последствия могут быть очень плачевными.[/p.s.]
tulskias, Если вопрос теоретический то двумерный в одномерный массив развертываетя элементарно при размерности R, C Будет R*C элементов. при помощи простых мат операций из последовательности от 1 до R*C на основе кратности получается индекс элемента двумерного массива соответствующий индексу одномерного в зависимости от того что перебираем первым, строки или столбцы. операции int((X-1)/R)+1 и Mod(X-1;R)+1 дадут пары 1,1; 1,2; 1,3 .... 2,1; 2,2; .... в #3 Эти значения просто нужно дополнительно обернуть в одну конструкцию и использовать в индекс
ARR2D - это двумерный массив, ARR1D - это 1 до R*C
Другое дело, нужно ли генерить сперва двумерный массив, или нужно путем сдвига дат по шаблону сразу получить одномерный с нужными датами. o32. Рядом просто проверка 1го и 15го элемента.
Благодарю всех, кто откликнулся! Ближе всего к тому чего я хочу ответ bmv98rus (вторая часть), но, конечно же, надо его еще «разобрать по косточкам». Еще раз, спасибо!
Благодарю всех, кто откликнулся! Ближе всего к тому чего я хочу ответ bmv98rus (вторая часть), но, конечно же, надо его еще «разобрать по косточкам». Еще раз, спасибо!tulskias