Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
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 -- summe zuordnen

vba -- summe zuordnen
22.02.2019 10:21:43
Fred

Hallo VBA Profis,
Ich möchte nach Kriterien Treffer mehrerer Teams (BB6:BB20) entsprechend jedem Teams summieren und entsprechend (BF6:BF20) ausgeben.
VBA
Sub Schaltfläche8_Klicken()
Dim n
Dim summe
For n = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(n, 3).Value = Cells(6, 54) Then
summe = summe + Cells(n, 5).Value
End If
If Cells(n, 4).Value = Cells(6, 54) Then
summe = summe + Cells(n, 6).Value
End If
Next n
Tabelle1.Range("BF6:BF20").Value = summe
End Sub
Das Ergebnis ist, das in den Zellen BF6:BF20 überall die Trefferanzahl von der ersten Berechnung eingetragen wird.
Was mache ich da falsch? Bitte um Hilfe.
Gruß
Fred Neumann

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba -- summe zuordnen
22.02.2019 11:12:02
EtoPHG
Hallo Fred,
Immer noch am gleichen Gebastel?
Warum das so ist:
1. Deine IF's werden nur durchlaufen, wenn die Zelle C(n) oder D(n) der Zelle BB6 entsprechen.
2. Du hast genau 1 Variable (summe) die dann aufaddiert wird.
3. Den Wert dieser Variablen schreibst du dann in den ganzen Bereich von BF6..BF20
Warum also nicht einfache Formeln (siehe DieseMappe), statt unverständliches VBA-Gefrikel?
Gruess Hansueli
AW: vba -- summe zuordnen
22.02.2019 11:42:49
Fred
Moin Hansueli,
die Summen mit einer Formel ermitteln, war von vornherein nicht das Problem. Wie schon erwähnt, soll zum ende ca 500 Teams jeweils 7.000 Spiele "nachfragen" und bei Kriterienübereinstimmung die Summe ermitteln. Dies sind dann nur die Berechnungen in einer Spalte,- es sollen noch über 50 weitere Berechnungen in jeweiligen Spalten geben.
Wenn ich das mit Formel in Zelle löse (ja,- ich wäre schon hundertmal durch mit dem Thema) müßte ich wohl die aut. Neuberechnung deaktivieren .... - will ich aber nicht ....
also möchte ich es mit vba lösen. Ich kann kein vba, würde zB. das vba

Dim mannsch As Range, TEAM As Range
Dim summe As Long, spiel As Long
Set such_rng = Range("C2:D" & ActiveSheet.UsedRange.Rows.Count).SpecialCells( _
xlCellTypeConstants)
For Each mannsch In Range("BB6:BB11")
summe = 0
spiel = 0
For Each TEAM In such_rng
If TEAM = mannsch Then
summe = summe + TEAM.Offset(0, 2)
spiel = spiel + 1
End If
Next TEAM
mannsch.Offset(0, 3) = summe
mannsch.Offset(0, 1) = spiel
Next
gerne entsprechend auf andere Berechnungen (Gegentreffer usw.) ändern,- aber der Code sagt mir absolut nix, wie ich das mache. Auf der anderen Seite stelle ich ja immer wieder fest, dass die Profis hier unterschiedlich Code darstellen (bei gleichen Ergebnis) ....
Siehst Du eine Möglichkeit, den oberen Code vielleicht anders zu schreiben,- so das ich ihn deuten kann,- oder weißt du die Lösung für meinen Code?
Gruß
Fred
Anzeige
Uneinsichtig, darum noch offen...
22.02.2019 13:20:10
EtoPHG
Dann muss ich Dich in Deinem unverrückbaren Glauben lassen, dass es mit VBA schneller und besser wird. Fred.
Ich lass den Thread offen, damit sich vielleicht Andere Deiner erbarmen...
Gruess Hansueli
vba-- summe zuordnen
22.02.2019 13:42:49
Fred
Hallo Hansueli,
uneinsichtig bin ich weniger.
Es geht doch eigentlich nur darum, ob gewisser Code auch anders geschrieben werden kann,- und/oder mein Code entsprechend korrigiert werden kann.
Gruß
Fred
AW: vba-- summe zuordnen
22.02.2019 16:06:45
EtoPHG
Hallo Fred,
Klar kann man das anders schreiben (anzuwenden auf deine gepostete Originaldatei!):
Sub DoIt()
Dim lRowE As Long
With Worksheets(1)
lRowE = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(1, 9), .Cells(lRowE, 12)).Clear
.Range(.Cells(2, 9), .Cells(lRowE, 9)).Formula = "=IF(E2>F2,1,0)"
.Range(.Cells(2, 10), .Cells(lRowE, 10)).Formula = "=IF(E2>=F2,0,1)"
.Range(.Cells(2, 11), .Cells(lRowE, 11)).Formula = "=IF(I2=1,3,IF(I2=J2,1,0))"
.Range(.Cells(2, 12), .Cells(lRowE, 12)).Formula = "=IF(J2=1,3,IF(I2=J2,1,0))"
With .Range(.Cells(2, 9), .Cells(lRowE, 12))
.Value = .Value
End With
lRowE = .Cells(.Rows.Count, 53).End(xlUp).Row
.Range(.Cells(6, 55), .Cells(lRowE, 58)).Clear
.Range(.Cells(6, 55), .Cells(lRowE, 55)).Formula = "=COUNTIF(C:C,BB6)+COUNTIF(D:D,BB6)"
.Range(.Cells(6, 56), .Cells(lRowE, 56)).Formula = "=SUMIF(C:C,BB6,K:K)+SUMIF(D:D,BB6,L:L)"
.Range(.Cells(6, 57), .Cells(lRowE, 57)).Formula = "=SUMIF(C:C,BB6,E:E)+SUMIF(D:D,BB6,F:F)"
.Range(.Cells(6, 58), .Cells(lRowE, 58)).Formula = "=SUMIF(C:C,BB6,I:I)+SUMIF(D:D,BB6,J:J)"
With .Range(.Cells(6, 55), .Cells(lRowE, 58))
.Value = .Value
End With
lRowE = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(1, 9), .Cells(lRowE, 12)).Clear
End With
End Sub
Kannst Du bitte Deine offenen Threads zu diesem leidigen Thema schliessen!
Gruess Hansueli
Anzeige
closed Thread dank Hansueli
22.02.2019 16:30:51
Fred
Hallo Hansueli,
jaaAAH! DAS ist es!
Diesen Code kann ich recht schnell deuten, ergänzen oder auf andere Berechnungen ändern undundund.
Vielen Dank das du nicht aufgegeben hast!!
Thread ist hiermit zur vollen Zufriedenheit meinerseits geschlossen.
Mit freundlichen Gruß
Fred Neumann

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige