Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Macro Zählen

VBA Macro Zählen
27.01.2017 10:13:35
Fabian
Hallo Zusammen,
Ich habe eine Frage bezüglich einer VBA Macro.
Mein Problem ist, dass ich jeden Tag eine sehr grosse Tabelle mit Daten bekomme im folgenden Format.
Spalte A: Uhrzeit
Spalte B: Preis
Spalte C: Stueckzahl
Dies sieht dann folgendermaßen aus:
A B C
9:00 100 1
9:01 159 2
9:02 175 5
Ich möchte nun eine Macro in VBA erstellen, bei der es in der Spalte C immer bis zu kumulierten 100 zählt (also aufsummieren der Werte in Spalte C) und wenn das erreicht ist, soll es den entsprechenden Wert in eine neues Tabelle kopieren. Nachdem der Wert kopiert wurde, soll es dort weiter zählen bis wieder 100 erreicht sind und den Wert dann kopieren und so weiter. Wenn natürlich die Tabelle keine Werte mehr hat soll das ganze stoppen.
Könnt ihr mir helfen, wie ich das in VBA erstelle?
Vielen Dank fuer eure Hilfe.
Fabian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Macro Zählen
27.01.2017 10:28:59
ChrisL
Hi Fabian
Der "entsprechende Wert" ist somit immer 100 und Summe(C:C)/100 = Anzahl Blätter?!
cu
Chris
AW: VBA Macro Zählen
27.01.2017 11:01:29
Fabian
Hi Chris,
Nein der Wert ist nicht immer 100. Auch variiert jeden Tag die länge der Tabelle, mal mehr mal weniger zeilen.
Dachte aber am Anfang um es zu vereinfachen es immer auf 100 zu standardisieren.
Es soll mir immer, wenn eine Stückzahl von 100 (oder anderer vorzugebender Wert) erreicht ist den entsprechenden Preis (aus Spalte B) in eine neue Tabelle kopieren.
Aktuell es es nur ein Blatt, mit den drei Zeilen.
Vielen Dank.
Gruss Fabian
AW: VBA Macro Zählen
27.01.2017 11:14:26
ChrisL
Hi Fabian
Das ist mir zu "unscharf" um einen Beispielcode zu produzieren. Mach doch bitte mal eine Beispieldatei (Ist und Soll).
cu
Chris
Anzeige
AW: VBA Macro Zählen
27.01.2017 11:58:43
Fabian
Also ich bekomme folgende Tabelle täglich. Dies repräsentiert in chronologischer Reihenfolge, welche all gehandelten Stücke pro Tag. Am
IST:
Uhrzeit Preis Stueckzahl
20150401_091500 24861 1
20150401_091500 24860 1
20150401_091500 24865 5
20150401_091500 24865 1
20150401_091500 24868 1
20150401_091500 24869 1
20150401_091500 24869 1
20150401_091500 24874 1
20150401_091500 24878 1
20150401_091500 24878 6
20150401_091500 24867 1
20150401_091500 24866 1
20150401_091500 24866 1
20150401_091500 24869 1
20150401_091500 24868 1
20150401_091500 24867 1
20150401_091500 24866 1
20150401_091500 24865 1
20150401_091500 24876 1
20150401_091500 24877 2
20150401_091500 24878 2
20150401_091500 24865 3
20150401_091500 24864 2
20150401_091500 24869 1
20150401_091500 24867 1
20150401_091500 24872 1
20150401_091500 24873 1
20150401_091500 24867 2
20150401_091500 24869 1
20150401_091500 24866 1
20150401_091500 24880 1
20150401_091500 24865 1
20150401_091500 24868 1
20150401_091500 24871 1
20150401_091500 24876 1
20150401_091500 24867 1
20150401_091500 24866 2
20150401_091500 24864 3
20150401_091500 24862 6
20150401_091500 24860 5
20150401_091500 24869 1
20150401_091501 24872 1
20150401_091501 24867 1
20150401_091501 24868 1
20150401_091501 24876 2
20150401_091501 24877 1
20150401_091501 24880 4
20150401_091501 24881 1
20150401_091501 24882 2
20150401_091501 24884 1
20150401_091501 24869 1
20150401_091501 24868 1
20150401_091501 24871 1
20150401_091501 24867 1
20150401_091501 24867 1
20150401_091501 24866 1
20150401_091501 24865 1
20150401_091501 24869 1
20150401_091501 24871 1
20150401_091501 24868 1
20150401_091501 24867 3
20150401_091502 24878 1
20150401_091502 24878 1
20150401_091502 24871 1
20150401_091502 24870 2
20150401_091502 24865 2
20150401_091502 24874 1
20150401_091503 24871 1
20150401_091503 24870 1
20150401_091503 24868 1
20150401_091504 24865 7
20150401_091504 24871 1
20150401_091504 24871 1
20150401_091504 24871 1
20150401_091504 24873 1
20150401_091504 24872 1
20150401_091504 24873 1
20150401_091504 24876 1
20150401_091504 24877 1
20150401_091504 24873 1
20150401_091505 24871 1
20150401_091505 24870 2
20150401_091505 24867 1
20150401_091505 24870 1
20150401_091505 24868 1
20150401_091505 24866 1
20150401_091505 24868 1
20150401_091505 24867 1
20150401_091505 24866 1
20150401_091505 24865 2
20150401_091505 24868 1
20150401_091506 24872 1
20150401_091506 24870 1
20150401_091506 24868 1
20150401_091506 24871 1
20150401_091506 24866 1
20150401_091506 24870 1
20150401_091506 24867 1
20150401_091506 24870 2
20150401_091506 24870 1
20150401_091506 24872 1
20150401_091507 24866 1
20150401_091507 24865 1
20150401_091507 24868 1
20150401_091507 24869 1
20150401_091507 24866 1
20150401_091507 24866 1
20150401_091507 24866 1
20150401_091507 24866 1
20150401_091507 24866 1
20150401_091507 24865 1
20150401_091507 24867 1
20150401_091508 24864 25
20150401_091508 24864 1
20150401_091508 24867 1
20150401_091508 24869 1
20150401_091508 24870 1
20150401_091508 24865 1
20150401_091508 24866 1
20150401_091509 24862 2
20150401_091509 24862 1
20150401_091509 24868 1
20150401_091509 24863 1
20150401_091509 24862 1
20150401_091509 24865 1
20150401_091509 24862 1
20150401_091510 24867 1
20150401_091510 24868 1
20150401_091510 24865 1
20150401_091510 24864 1
20150401_091510 24862 1
20150401_091510 24862 1
20150401_091510 24862 1
20150401_091510 24862 1
20150401_091510 24862 1
20150401_091511 24866 1
20150401_091511 24863 2
20150401_091511 24862 1
20150401_091511 24861 1
20150401_091511 24861 1
20150401_091511 24861 1
20150401_091512 24865 4
20150401_091512 24865 4
20150401_091512 24862 1
20150401_091513 24864 38
20150401_091513 24863 1
20150401_091513 24867 1
20150401_091514 24864 1
20150401_091514 24862 1
SOLL:
Meine Idee ist ein in einem zweiten Arbeitsblatt ein Optionsfeld zu entwerfen. Hierbei gibt man den gewünschten Wert X eingeben (z.B. 100) und aktiviert die Macro. Anschliessend erhält man folgende Tabelle:
Wert - Preis:
1 - vom X gehandelten Stueck
2 - vom 2X gehandelten Stueck
3 - vom 3X gehandelten Stueck
4 - vom 4X gehandelten Stueck
...
Ich hoffe das war verständlich ausgedrückt.
Vielen Dank nochmal.
Fabian
Anzeige
offen owT
27.01.2017 12:46:09
ChrisL
.
AW: VBA Macro Zählen
27.01.2017 14:17:06
Max2
Hallo, hoffe ich habe dein Problem und das was du willst verstanden.
Hier Beispiel Mappe: https://www.herber.de/bbs/user/110940.xlsm
Hier Code für alle die nichts runterladen wollen:

Option Explicit
Sub bis_x_Summieren()
Dim ws As Worksheet
Dim rng, c As Range
Dim lzeile As Long
Dim sum As Long
Dim icount, icount_2, i As Long
Dim rowStopp As Long
Dim j As Integer
icount_2 = 0
Set ws = ThisWorkbook.Sheets(1)
With ws
lzeile = .Cells(.Rows.Count, 3).End(xlUp).row
Set rng = .Range(.Cells(1, 3), .Cells(lzeile, 3))
j = Application.InputBox("Bitte Zahl eingeben", "Zahl", Type:=1)
icount = Round(lzeile \ j, 0)
For Each c In rng
If i = icount Then
.Cells(i + 1, 5).Value = sum
Exit For
End If
icount_2 = icount_2 + 1
rowStopp = j
If icount_2 > rowStopp Then
.Cells(i + 1, 5).Value = sum
sum = 0
i = i + 1
icount_2 = 0
End If
If IsNumeric(c.Value) Then
sum = sum + c.Value
End If
Next c
End With
End Sub

Anzeige
AW: meinst Du so?
30.01.2017 07:56:51
Fabian
Vielen Dank schon mal für eure super Hilfe.
Leider ist es noch nicht das was ich brauche. (Drücke mich wohl immer falsch aus.)
Im obigen Fall wenn ich eine Stückzahl von 100 vorgebe, beginnt die Lösung mit den folgenden Werten:
Uhrzeit: Preis:
20150401_091502 24870 (das ist der Preis des 100ten Stück das heute gehandelt wurde)
20150401_091510 24867 (das ist der Preis des 200ten Stück das heute gehandelt wurde)
Fortführend soll es dann den 300ten, 400ten .... und so weiter Preis auflisten.
Beste Gruesse
Fabian
Anzeige
AW: meinst Du so?
30.01.2017 18:35:32
Michael
Hi,
na, da ist ja nur eine Zeile zu ändern
Sub machen()
Dim a, uba&, i&, anz&, anzMax, summe#, von, ausZ&, anzG&, sumG#
anzMax = Sheets("Tabelle2").Range("b2").Value
If Not IsNumeric(anzMax) Then MsgBox "Keine Zahl eingegeben.": Exit Sub
If anzMax = anzMax Or i = uba Then
With Sheets("Tabelle2")
.Range("E" & ausZ) = von
.Range("F" & ausZ) = a(i, 1)
'       .Range("G" & ausZ) = summe *** *** ***
.Range("G" & ausZ) = a(i, 2)
.Range("H" & ausZ) = anz
End With
ausZ = ausZ + 1
sumG = sumG + summe
summe = 0
anzG = anzG + anz
anz = 0
If i 
Gruß,
Michael
Anzeige
AW: meinst Du so?
03.02.2017 05:27:02
Fabian
Hi Michael,
vielen herzlichen Dank.
Habe es getestet und es ist "fast" perfekt.
Mir ist bei verschiedenen samples nur aufgefallen, das aktuell noch overlaps bestehen.
Sprich manchmal ist die quantity 103, statt 100, dann für diesen Preis 5 Stück gehandelt wurden. Somit beginnt die VBA für das neue interval erst bei 103 zu zählen und verschiebt den richtigen Preis für das neue entsprechend.
Gibt es eine Möglichkeit, dies zu beheben.
Nochmal vielen herzlichen Dank.
Gruss Fabian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige