Registriert seit: 19.01.2018
Version(en): 2016
Hallo zusammen,
bisher bin ich leider nirgend anders fündig geworden und auch nicht wirklich sicher, ob das mit Excel überhaupt möglich ist:
Wie der Titel schon sagt, müsste ich in einem Datensatz die Anzahl an Einträgen (nicht die Einträge selbst) in einem regelmäßigen Abstand aufsummieren. Genauer muss ich in einer Spalte alle 60 Einträge die ANZAHL2 ermitteln (wäre zumindest meine Idee).
Hat vielleicht irgend jemand eine Idee, wie und ob das zu machen ist?
Für jede Hilfe wäre ich sehr dankbar.
Mit freundlichen Grüßen
Daniel
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
19.01.2018, 20:12
(Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2018, 20:12 von WillWissen.
Bearbeitungsgrund: Formel korrigiert
)
Hi, hier mein Vorschlag: Arbeitsblatt mit dem Namen 'Tabelle2 (2)' | | A | B | 1 | a | 5 | 2 | b | 4 | 3 | | 6 | 4 | c | 4 | 5 | d | 6 | 6 | e | 5 | 7 | f | 2 | 8 | | 2 | 9 | g | 1 | 10 | | | 11 | h | | 12 | i | | 13 | j | | 14 | k | | 15 | l | | 16 | m | | 17 | n | | 18 | o | | 19 | p | | 20 | q | | 21 | | | 22 | r | | 23 | s | | 24 | | | 25 | t | | 26 | u | | 27 | v | | 28 | w | | 29 | x | | 30 | y | | 31 | z | | 32 | ä | | 33 | ö | | 34 | ü | | 35 | | | 36 | ß | | 37 | 10 | | 38 | | | 39 | | | 40 | | | 41 | 20 | | 42 | | | 43 | | | 44 | | | 45 | | | 46 | 30 | | 47 | 40 | | 48 | | | 49 | | | 50 | 50 | | 51 | | | 52 | | | 53 | | | 54 | | |
Zelle | Formel | B1 | =6-WENNFEHLER(ANZAHLLEEREZELLEN($A$1:INDIREKT("A"&AGGREGAT(15;6;ZEILE($A$1:$A$54)/(REST(ZEILE($A$1:$A$54);6)=0);ZEILE(A1))));"") | B2 | =WENNFEHLER(ANZAHL2($A$1:INDIREKT("A"&AGGREGAT(15;6;ZEILE($A$1:$A$54)/(REST(ZEILE($A$1:$A$54);6)=0);ZEILE(A2))))-SUMME($B$1:B1);"") |
Verwendete Systemkomponenten: [Windows (32-bit) NT :.00] MS Excel 2013 | Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
Die Formeln musst du halt noch auf deinen 60-Zellen-Abstand anpassen. Zum Testen habe ich 6 Zellen genommen.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 19.01.2018
Version(en): 2016
Vielen Dank schonmal, Vorschlag funktioniert soweit :)
Gibt nur leider noch ein Problem: (sorry, hätte ich vlt. gleich erwähnen sollen),
Der Datensatz hat 700.000 Einträge. Gibt es irgend eine Möglichkeit sowas fortlaufend durchzuführen? :/
Keine Ahnung, ob man sowas bei Excel vlt in nem Makro schreiben und mit einer (falls das hier ähnlich wie Java ist, kenne mich leider in Excel kaum aus) for-Schleife die zu zählenden Einträge entsprechend erhöhen kann?
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hallo Daniel, was meinst du mit fortlaufend? Etwa so? Arbeitsblatt mit dem Namen 'Tabelle2 (3)' | | A | B | C | 1 | a | bis 6 | 5 | 2 | b | bis 12 | 9 | 3 | | bis 18 | 15 | 4 | c | bis 24 | 19 | 5 | d | bis 30 | 25 | 6 | e | bis 36 | 30 | 7 | f | bis 42 | 32 | 8 | | bis 48 | 34 | 9 | g | bis 54 | 35 |
Zelle | Formel | C1 | =6-WENNFEHLER(ANZAHLLEEREZELLEN($A$1:INDIREKT("A"&AGGREGAT(15;6;ZEILE($A$1:$A$54)/(REST(ZEILE($A$1:$A$54);6)=0);ZEILE(A1))));"") | C2 | =WENNFEHLER(ANZAHL2($A$1:INDIREKT("A"&AGGREGAT(15;6;ZEILE($A$1:$A$54)/(REST(ZEILE($A$1:$A$54);6)=0);ZEILE(A2))))-SUMME($C$1:C1);"")+SUMME($C$1:C1) |
Verwendete Systemkomponenten: [Windows (32-bit) NT :.00] MS Excel 2013 | Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
Falls es immer noch nicht passt, solltest du eine kleine (!) Beispieltabelle mit händisch eingetragenem Wunschergebnis hochladen. http://www.clever-excel-forum.de/thread-326.htmlEine VBA-Lösung kann ich dir allerdings mangels Wissen nicht anbieten. Da müssten dann andere Helfer ran.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 13.04.2014
Version(en): 365
Hi, etwas resourcenschonender: Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | D | 1 | ET | | 1 - 60 | 56 | 2 | XW | | 61 - 120 | 53 | 3 | XS | | 121 - 180 | 60 |
Zelle | Formel | C1 | =(ZEILE(A1)-1)*60+1&" - "&ZEILE(A1)*60 | D1 | =WENNFEHLER(ANZAHL2(INDEX(A:A;(ZEILE(A1)-1)*60+1):INDEX(A:A;ZEILE(A1)*60));"") | C2 | =(ZEILE(A2)-1)*60+1&" - "&ZEILE(A2)*60 | D2 | =WENNFEHLER(ANZAHL2(INDEX(A:A;(ZEILE(A2)-1)*60+1):INDEX(A:A;ZEILE(A2)*60));"") | C3 | =(ZEILE(A3)-1)*60+1&" - "&ZEILE(A3)*60 | D3 | =WENNFEHLER(ANZAHL2(INDEX(A:A;(ZEILE(A3)-1)*60+1):INDEX(A:A;ZEILE(A3)*60));"") |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 19.01.2018
Version(en): 2016
Ich bin mir nicht ganz sicher, ob ich das jetzt richtig verstanden habe. Das erste Beispiel, das du mir geschrieben hast WillWissen, war eigentlich schon genau das richtige. Aber wenn ich das jetzt richtig verstanden habe (so habe ich es zumindest getestet), hast du für B1 bis B9 jeweils den Code eingesetzt oder? Problem bei der Sache ist, dass wenn ich das bei mir so machen würde, ich 700.000/60, also reichlich 11.000 Zellen mit jeweils einer Funktion befüllen müsste. Oder funktioniert das anders? Bin verwirrt, sorry  Grüße, Dani
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
20.01.2018, 13:19
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2018, 13:19 von WillWissen.)
Hi Dani, das war deine Ausgangsfrage: Zitat:Wie der Titel schon sagt, müsste ich in einem Datensatz die Anzahl an Einträgen (nicht die Einträge selbst) in einem regelmäßigen Abstand aufsummieren.
Genauer muss ich in einer Spalte alle 60 Einträge die ANZAHL2 ermitteln (wäre zumindest meine Idee). Zitat:wenn ich das bei mir so machen würde, ich 700.000/60, also reichlich 11.000 Zellen mit jeweils einer Funktion befüllen müsste Da bleibt dir wohl nichts anderes übrig. Dass du aber nicht allte Zellen händisch füllen musst, weißt du? ab der zweiten Formel einfach am Ausfüllkästchen nach unten ziehen. Aber vllt. könntest du mal erklären, was du mit deinem Vorhaben eigentlich bezweckst. Möglicherweise kann eine andere Lösung gefunden werden.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 13.04.2014
Version(en): 365
20.01.2018, 13:53
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2018, 13:53 von BoskoBiati.)
Hi, ich würde die Formel auf jeden Fall nicht anwenden, da sie bei der Anzahl von Zellen den Rechner absolut ausbremst. INDIREkt ist volatil und AGGREGAT ziemlich rechenintensiv. In B eine Formel zum runterziehen, In C&D das Ganze zusammengefasst: Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | D | 1 | ET | 56 | 1 - 60 | 56 | 2 | XW | | 61 - 120 | 53 | 3 | XS | | 121 - 180 | 60 |
Zelle | Formel | B1 | =WENN(REST(ZEILE();60)=1;ANZAHL2(A1:A60);"") | C1 | =(ZEILE(A1)-1)*60+1&" - "&ZEILE(A1)*60 | D1 | =WENNFEHLER(ANZAHL2(INDEX(A:A;(ZEILE(A1)-1)*60+1):INDEX(A:A;ZEILE(A1)*60));"") |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 06.12.2015
Version(en): 2016
20.01.2018, 14:33
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2018, 14:33 von Fennek.
Bearbeitungsgrund: weiterer Ansatz
)
Hallo, ungeprüft: Code: dim Res() as int dim i as long lr = cells(rows.count,1).end(xlup).row Ar= Range("A1:A" & lr) redim Res(ubound(Ar)) for i = 1 to ubound(Ar) if Ar(i) <> "" then A2=A2+1 if i mod 60 = 0 then Res(int(r/60)) = A2 A2=0 endif next i
cells(1,5).resize(ubound(Ar)+1) = application.transpose(Res)
Falls immer 60 gezeigt wird, sollte <>"" in <>0 geändert werden. Es fehlt noch eine aussagefähige Beschriftung. mfg ___________ Noch eine Idee, die aber noch nicht läuft: Code: Sub Main dim Res() on error goto fin lr = cells(rows.count,1).end(xlup).row redim Res(lr/6+1) '<<< zum Testen for each Ar in activesheet.usedrange.columns(1).specialcells(4).areas for r = 1 to ar.count cells(ar.cells(r).row,2) = ar.cells(r).row Res(ar.cells(r).row mod 6) = Res(ar.cells(r).row mod 6) +1 next r next Ar cells(1,4).resize(ubound(Res)+1) = application.transpose(Res) exit sub fin: msgbox Ar.address & ", " & r End Sub
Registriert seit: 06.12.2015
Version(en): 2016
so sollte es für 6-er Blocks gehen: Code: Sub Main dim Res() on error goto fin lr = cells(rows.count,1).end(xlup).row redim Res(lr/6+1) '<<< zum Testen for each Ar in activesheet.usedrange.columns(1).specialcells(4).areas for r = 1 to ar.count 'cells(ar.cells(r).row,2) = ar.cells(r).row Res(int(ar.cells(r).row / 6)) = Res(int(ar.cells(r).row / 6)) +1 next r next Ar cells(1,4).resize(ubound(Res)+1) = application.transpose(Res) for i = 0 to ubound(Res) cells(i+1,6) = Res(i) next i exit sub fin: msgbox Ar.address & ", " & r End Sub
mfg
|