Selektives Hochzählen in Excel

Selektives Hochzählen in Excel

Zur Information: Ich habe die Frage gestellt inwww.clever-excel-forum.deUndwww.ms-office-forum.net/. Ich möchte folgendes erreichen:

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 soll ab Zeile 2 in jeder dritten Zeile eine 1 setzen, bis in A3 das erste Mal eine 254 erreicht wurde. Dann muss bei der nächsten Einstellung (nach 254 in A3) die 1 hochgezählt werden und auf 2 (A2) springen. Ist die 254 in A2 erreicht, muss wieder auf 1 gesprungen werden und die 1 in A1 springt auf 2.

so weit so gut (von Benutzer: lupo1 aus dem MS-Office-Forum):

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, 

Eine Sache funktioniert noch nicht: Die Spalte A2 zählt über 254 hinaus, sollte aber nach 254 immer wieder auf 1 zurückspringen.

Problem:

Bildbeschreibung hier eingeben

Antwort1

Die Lösung:https://www.excelforum.com/excel-programmierung-vba-makros/1334728-selektives-hochzählen-in-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))))

oder in meinem Fall für Deutsch:

    =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))))

Mit freundlichen Grüße

Antwort2

Bildbeschreibung hier eingeben

Wenn die Zeilennummer (row()) als Index verwendet wird, ist Spalte C einfach der Rest nach der Division (Modul) durch 254, versetzt um 1 (also 0..253 bis 1..254):

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

Spalte B ist der Quotient nach der ganzzahligen Division durch 254 und Spalte A der Quotient nach der ganzzahligen Division durch 254^2, beide mit dem Modul auf 1..254 skaliert und um 1 versetzt:

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

Und

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

Die if-Anweisung stellt lediglich sicher, dass die Zahlen in jeder dritten Zeile angezeigt werden.

Bildbeschreibung hier eingeben

verwandte Informationen