Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
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 mehrere Spalten durchsuchen & Werte summieren

VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 08:55:32
verslaan
Guten Morgen allerseits
Ich habe heute nochmals ein Problem, mit welchem ich nicht wirklich weiter komme.
Ich möchte mehrere Zeilen folgendermassen durchsuchen:
Zeile 5 Spalte H -> wenn der String = Variable DANN zähle Wert in BH / BI / BJ pro Spalte  _
zusammen und gib Total in Variable aus,
gehe auf nächste Zeile (genau das gleiche Spiel für eine komplette Range).
Soviel zur Theorie... Geht das überhaupt?
Danke für eure Hilfe
Gruss

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

Betreff
Datum
Anwender
Anzeige
AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 09:09:22
Rudi
Hallo,
Geht das überhaupt?
Warum nicht?
Muster:
If Cells(i,8)=Variable then Summe=Summe+Worksheetfunction.Sum(Range(Cells(i,60),Cells(i,62)))
Gruß
Rudi

AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 09:36:48
verslaan
Hey, danke für deine Antwort.
ja weiss nicht, weil im Kopf noch schnell was möglich ist ;)
Habe anhand deines Code probiert etwas auf die Beine zu stellen.
Momentan endet das ganze im Bereich

If Cells(newZelle1) = REtype Then
mit einem 1004er "Anwendungs- oder Objektdefinierter Fehler".
Danke für deine Hilfe.
Sub Test()
Dim REtype As String
Dim SummeWK1 As Integer
Dim SummeWK2 As Integer
Dim SummeWK3 As Integer
Dim i As Integer
Dim Zeile As Integer
Dim newZelle1 As String
Dim newZelle2 As String
REtype = "RE13C"
Zeile = 5
newZelle1 = "H" & Zeile
newZelle2 = "BH" & Zeile
For i = 1 To 74
If Cells(newZelle1) = REtype Then SummeWK1 = SummeWK1 + WorksheetFunction.Sum(Range( _
Cells(newZelle2)))
Zeile = Zeile + 1
Next
End Sub

Anzeige
AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 10:05:54
Rudi
Hallo,
newZelle1 und newZelle2 bleiben immer gleich (H5 und BH5).
Sub Test()
Dim REtype As String
Dim SummeWK1 As Integer
Dim i As Integer
REtype = "RE13C"
For i = 5 To 78
If Cells(i, 8) = REtype Then
SummeWK1 = SummeWK1 + WorksheetFunction.Sum(Cells(i, 60).Resize(, 3))
End If
Next
MsgBox SummeWK1
End Sub

Gruß
Rudi

AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 11:17:32
verslaan
@Ruedi
Besten Dank für deinen Input, habe dort einen Überlegungsfehler gemacht.
Habe meinen Code wie folgend umgeschrieben. Da ich die Summe der Values benötige habe ich das ganze Testweise ein bisschen kopiert und angepasst. Muss jetzt dann wohl alles noch einfacher schreiben so rein der Performance zuliebe (Funktion oder so).
Beim letzten Teil "Status Weiss" funktioniert das noch nicht so wie ich mir wünsche...
Denn eine Leere Menge kann ich ja nicht zusammenzählen, kann aber sicherlich die leeren Zellen zählen. Hierzu muss ich mich allerdings noch schlau machen.
    For i = 5 To 80
'Status Grün
If Cells(i, 8) = REtype And Cells(i, 60).text = 1 Then
SummeWK1grün = SummeWK1grün + WorksheetFunction.Sum(Cells(i, 60).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 61).text = 1 Then
SummeWK2grün = SummeWK2grün + WorksheetFunction.Sum(Cells(i, 61).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 62).text = 1 Then
SummeWK3grün = SummeWK3grün + WorksheetFunction.Sum(Cells(i, 62).Resize(1))
End If
'Status Gelb
If Cells(i, 8) = REtype And Cells(i, 60).text = 2 Then
SummeWK1gelb = SummeWK1gelb + WorksheetFunction.Sum(Cells(i, 60).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 61).text = 2 Then
SummeWK2gelb = SummeWK2gelb + WorksheetFunction.Sum(Cells(i, 61).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 62).text = 2 Then
SummeWK3gelb = SummeWK3gelb + WorksheetFunction.Sum(Cells(i, 62).Resize(1))
End If
'Status Rot
If Cells(i, 8) = REtype And Cells(i, 60).text = 3 Then
SummeWK1rot = SummeWK1rot + WorksheetFunction.Sum(Cells(i, 60).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 61).text = 3 Then
SummeWK2rot = SummeWK2rot + WorksheetFunction.Sum(Cells(i, 61).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 62).text = 3 Then
SummeWK3rot = SummeWK3rot + WorksheetFunction.Sum(Cells(i, 62).Resize(1))
End If
'Status Weiss
If Cells(i, 8) = REtype And Cells(i, 60).text = "" Then
SummeWK1weiss = SummeWK1weiss + WorksheetFunction.Sum(Cells(i, 60).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 61).text = "" Then
SummeWK2weiss = SummeWK2weiss + WorksheetFunction.Sum(Cells(i, 61).Resize(1))
End If
If Cells(i, 8) = REtype And Cells(i, 62).text = "" Then
SummeWK3weiss = SummeWK3weiss + WorksheetFunction.Sum(Cells(i, 62).Resize(1))
End If
Next
@hansueli
Jap hast recht, logischweise funktioniert das in einer For Schlaufe so nicht.
Habe den Code wohl zu schnell geschrieben und ohne Kontrolle gepostet.
Habe ich mich wohl mehr auf den folgenden Kaffee als auf den Code konzentriert ;-)
Trotzdem danke für den Hinweis mit der Hilfe, kannte ich noch nicht.

Anzeige
AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 11:29:28
Rudi
Hallo,
wenn du die Anzahl der Stati zählen willst, dann so:
  For i = 5 To 80
If Cells(i, 8) = REtype Then
Select Case Cells(i, 60)
Case 1: SummeWK1grün = SummeWK1grün + 1
Case 2: SummeWK1gelb = SummeWK1gelb + 1
Case 3: SummeWK1rot = SummeWK1rot + 1
Case "": SummeWK1weiss = SummeWK1weiss + 1
End Select
Select Case Cells(i, 61)
Case 1: SummeWK2grün = SummeWK2grün + 1
Case 2: SummeWK2gelb = SummeWK2gelb + 1
Case 3: SummeWK2rot = SummeWK2rot + 1
Case "": SummeWK2weiss = SummeWK2weiss + 1
End Select
Select Case Cells(i, 62)
Case 1: SummeWK3grün = SummeWK3grün + 1
Case 2: SummeWK3gelb = SummeWK3gelb + 1
Case 3: SummeWK3rot = SummeWK3rot + 1
Case "": SummeWK3weiss = SummeWK3weiss + 1
End Select
End If
Next

Gruß
Rudi

Anzeige
AW: VBA mehrere Spalten durchsuchen & Werte summieren
17.09.2013 10:12:33
EtoPHG
Hallo verslaan,
Auch wenn du immer noch in C# oder PHP denkst, ich glaube nicht, dass man in jenen Sprachen so programmiert! Wenn du schon mit VBA anfängst, benutze ausgiebig die eingebaute VBA Hilfe (Cursor im VBE auf Keyword (z.B. Cells) setzen und F1). Dann wirst du z.B. sehen, dass Cells(row, column) 2 Indices verlangt.
Du brauchst einen For-Next-Loop, dessen Laufindex i nie angewendet wird. Wieso?
Du veränderst eine Variable Zeile + 1, die innerhalb des Loops nie angewendet wird. Wieso?
Du durchläufst 74 mal den gleichen Code mit newZelle1 ("H5") und newZelle2 ("BH5"). Wieso?
Gruess Hansueli
Anzeige

347 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige