Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

In regelmäßigen Abständen ANZAHL2 bilden
#1
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
Antworten Top
#2
Hi,

hier mein Vorschlag:

Arbeitsblatt mit dem Namen 'Tabelle2 (2)'
AB
1a5
2b4
36
4c4
5d6
6e5
7f2
82
9g1
10
11h
12i
13j
14k
15l
16m
17n
18o
19p
20q
21
22r
23s
24
25t
26u
27v
28w
29x
30y
31z
32ä
33ö
34ü
35
36ß
3710
38
39
40
4120
42
43
44
45
4630
4740
48
49
5050
51
52
53
54

ZelleFormel
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)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Daniel639
Antworten Top
#3
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?
Antworten Top
#4
Hallo Daniel,

was meinst du mit fortlaufend? Etwa so?

Arbeitsblatt mit dem Namen 'Tabelle2 (3)'
ABC
1abis 65
2bbis 129
3bis 1815
4cbis 2419
5dbis 3025
6ebis 3630
7fbis 4232
8bis 4834
9gbis 5435

ZelleFormel
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.html

Eine 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)
Antworten Top
#5
Hi,

etwas resourcenschonender:


Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCD
1ET 1 - 6056
2XW 61 - 12053
3XS 121 - 18060

ZelleFormel
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.
Antworten Top
#6
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  Undecided

Grüße,

Dani
Antworten Top
#7
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)
Antworten Top
#8
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'
 ABCD
1ET561 - 6056
2XW 61 - 12053
3XS 121 - 18060

ZelleFormel
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.
Antworten Top
#9
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
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste