Выборочный подсчет в Excel

Выборочный подсчет в Excel

Для информации я задал вопрос вwww.clever-excel-forum.deиwww.ms-office-forum.net/Я хотел бы добиться следующего:

A1     A2     A3     A4      -> row 1
1      1      1      45      
              2      30      
              3      30
1      1      4      45
              5      30
                             ...
1      1    254      45
              1      30
              2      30
1      2      3      45
                             ... 
1    254    254      45
              1      30
              2      30
2      1      3      45
                            ...
3    189     12      45    -> up to approx row 250540

A2 должен устанавливать 1 со строки 2 и далее в каждых трех строках, пока 254 не будет достигнуто в первый раз в A3. Затем при следующей настройке (после 254 в A3) 1 должен быть увеличен и перейти к 2 (A2). Если достигнуто 254 в A2, он должен перейти обратно к 1, а 1 в A1 переходит к 2.

пока все хорошо (от пользователя lupo1 с форума ms-office):

A1: =LET(n;250000;WAHL(SEQUENZ(;4);
WENN(REST(SEQUENZ(n);3)=1;KÜRZEN(SEQUENZ(n;;0;1/254^2)+1);"");
WENN(REST(SEQUENZ(n);3)=1;KÜRZEN(SEQUENZ(n;;0;1/254^1)+1);"");
REST(SEQUENZ(n;;0);254)+1;
INDEX({45.30.30};REST(SEQUENZ(n)-1;3)+1)))



WENN = IF, 
REST = MOD, 
SEQUENZ = SEQUENCE, 
KÜRZEN = TRUNC, 

Одно пока не работает: столбец A2 учитывает значения после 254, но должен всегда возвращаться к 1 после 254.

Проблема:

введите описание изображения здесь

решение1

Решение:https://www.excelforum.com/excel-programming-vba-macros/1334728-выборочный-подсчет-в-excel.html

    =LET(n,800000,CHOOSE(SEQUENCE(,4),
IF(MOD(SEQUENCE(n),3)=1,1+TRUNC(SEQUENCE(n,,0,1/254^2)),""),
IF(MOD(SEQUENCE(n),3)=1,1+MOD(INT(SEQUENCE(n,,0,)/254),254),""),
1+MOD(SEQUENCE(n,,0),254),
INDEX({45,30,30},1+MOD(SEQUENCE(n)-1,3))))

или в моем случае для немецкого:

    =LET(n;260000;WAHL(SEQUENZ(;4);
WENN(REST(SEQUENZ(n);3)=1;1+KÜRZEN(SEQUENZ(n;;0;1/254^2));"");
WENN(REST(SEQUENZ(n);3)=1;1+REST(GANZZAHL(SEQUENZ(n;;0;)/254);254);"");
1+REST(SEQUENZ(n;;0);254);
INDEX({45.30.30};1+REST(SEQUENZ(n)-1;3))))

С уважением

решение2

введите описание изображения здесь

Используя номер row() в качестве индекса, столбец C представляет собой просто остаток от деления (модуля) на 254, смещенный на 1 (т. е. от 0..253 до 1..254):

=MOD(ROW()-1,254)+1

Столбец B — это частное от деления целого числа на 254, а столбец A — частное от деления целого числа на 254^2, оба масштабированы до 1..254 с модулем и смещением на 1:

=IF(MOD(ROW()-1,3)=0,MOD(INT((ROW()-1)/254),254)+1,"")

и

=IF(MOD(ROW()-1,3)=0,MOD(INT((ROW()-1)/(254^2)),254)+1,"")

Оператор if просто обеспечивает отображение чисел в каждой третьей строке.

введите описание изображения здесь

Связанный контент