Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summewenn mit mehr als 1 Kriterium nur per VBA

Summewenn mit mehr als 1 Kriterium nur per VBA
28.12.2003 11:30:08
Klaus K.
Hi Leute,

die Frage war gestern schon gepostet. Aber ein
Verweis auf Formeln nützt mir nichts, wenn ich
eine Lösung in VB suche. Ist nicht schön, wenn
man so aus den "offenen" rausfliegt.

Zum Problem:
in Tabelle1 A und B stehen die zu suchenden Werte,
in C die zu summierenden Werte,
in Tabelle2 G10 und G11 die Suchkriterien.

Ansätze kann ich hier leider nirgends finden.
Bin für jede Hilfe dankbar.
Gruss
Klaus


11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summewenn mit mehr als 1 Kriterium nur per VBA
28.12.2003 12:05:20
Achim
Hallo,

versuchs doch mal mit Summe wenn.

Gruß Achim
Danke für die Formel - oT
28.12.2003 13:21:00
Klaus K.
.
...mit VBA
28.12.2003 12:55:29
Ramses
Hallo Klaus

Hier der entsprechende VBA_Code dazu:


Function MySumProd()
'by Ramses
'fixe Konstellation
Dim i As Integer, n As Integer
Dim ResC As Integer 'Wertespalte
Dim S1 As Variant, S2 As Variant
Dim intSum As Variant
S1 = Range("G1")
S2 = Range("G2")
ResC = 3
intSum = 0
'Zwei Schleifen über A und B
For n = 1 To 2
    'Multiplizieren
    For i = 1 To Cells(65536, n).End(xlUp).Row
        If Cells(i, n) = S1 Or Cells(i, n) = S2 Then
            intSum = intSum + Cells(i, ResC)
        End If
    Next i
Next n
MySumProd = intSum
End Function

Function MySumProd2(R1 As Range, R2 As Range, R3 As Range, S1 As Variant, S2 As Variant)
'by Ramses
'Variable Konstellation
Dim i As Integer
Dim intSum As Variant
Dim myC As Range
intSum = 0
Debug.Print "Spaltennummer " & R3.Column
For Each myC In R1
    If myC.Value = S1 Or myC = S2 Then
        intSum = intSum + myC.Offset(0, R3.Column - R1.Column)
    End If
Next
For Each myC In R2
    If myC.Value = S1 Or myC = S2 Then
        intSum = intSum + myC.Offset(0, R3.Column - R2.Column)
    End If
Next
MySumProd2 = intSum
End Function 
     Code eingefügt mit Syntaxhighlighter 1.16



Hier die Tabelle mit dem Aufruf der Funktionen:

Anzeige
Das ist doch schon was!!! Danke :-))) oT.
28.12.2003 13:23:03
Klaus K.
.
Es geht noch einfacher mit VBA :-))
28.12.2003 16:07:07
Klaus K.

Sub Summe_01()
Dim iRow As Integer, W1, W2, sum As Variant
iRow = 1
W1 = Sheets("Mask-01").Range("G7").Value                    'Kriterium 1
W2 = Sheets("Mask-01").Range("G11").Value                   'Kriterium 2
Do Until IsEmpty(Sheets("DB-01").Cells(iRow, 2))            'ab Zeile 2
If Sheets("DB-01").Cells(iRow, 2).Value = W1 And _
Sheets("DB-01").Cells(iRow, 5).Value = W2 And _
Sheets("DB-01").Cells(iRow, 47).Value > 0 Then
sum = Sheets("DB-01").Cells(iRow, 47).Value + sum     'Wert + nächster Wert
End If
iRow = iRow + 1
Loop
Sheets("Mask-01").Range("G17") = sum                        'Rückgabe in Zelle
End Sub

Anzeige
Ob das einfacher ist...
28.12.2003 16:52:31
Ramses
Hallo Klaus

Es gibt immer mehrere Wege nach Rom.

In deinem Makro setzt du aber voraus

A)
Dass die Suchbegriffe IMMER zusammen in einer Zeile sind und zusätzlich ein Wert grösser Null vorliegt

"...Sheets("DB-01").Cells(iRow, 2).Value = W1 And _
Sheets("DB-01").Cells(iRow, 5).Value = W2 And _...."

B)
Das in in Spalte A genauso viele Einträge sind wie in Spalte B

woher weisst du übrigens, dass die Suchspalten in 2,5, und 47 sind ?

... und ob dein Makro wirklich einfacher ist als die variable Funktion :-))

Nix für ungut.
Einen schönen Sonntag abend noch

Gruss Rainer
Anzeige
AW: Ob das einfacher ist...
28.12.2003 21:01:42
Klaus K.
Hallo Rainer,
das posten meines Macros sollte natürlich keine Kritik sein.
Ich hoffe Du hast es nicht so aufgefasst.
Deine Funktion ist in Hinsicht auf Individualität mit Sicherheit die Bessere.
Diese lässt sich in jede Tabelle und ohne weitere Anpassung einbauen.
Es ist ja auch eben eine Funktion. Und die hat mir auch weitergeholfen.
Aber zum einen ist sie bei ca. 20.000 Datensätzen sehr Träge und
zum anderen benötige ich die gesuchten Werte immer nur aus einem Datensatz.
Zu A)
Das Kriterium ">0" in Spalte 47 benötige ich deshalb, weil dort auch negative
Werte stehen die nicht summiert werden sollen.
Die Zeile kann man ja bei Bedarf weglassen.
Zu B)
Die Suchbegriffe müssen natürlich vorhanden sein. In meinem Projekt sind es
Kundennummer und das Jahr der Rechnungsstellung. In einer Datenbank dieser
Art ist das Vorhandensein dieser Daten aber auch Pflicht.
Zu "woher weisst du übrigens,..."
Ich weiss nicht ob ich die Frage richtig interpretiere!?
Die Spaltennummern kann man doch zählen, oder Z1S1-Bezugsart.

Ob einfacher oder nicht. Mein Beispiel ist jedenfalls für mich einfacher.
Und da ich aus Prinzip nicht zu den Fragern gehören will, die aus Selbstherrlichkeit
ihre aus dem kostenlosen(!)Forum gewonnenen Erkenntnisse nicht der Öffentlichkeit
mitteilen wollen, habe ich eben mein Beispiel gepostet.

So und wünsche ich Dir noch einen angenehmen "Codeing-Abend" :-)
Gruss Klaus
Anzeige
Mit der Erklärung...
28.12.2003 21:18:33
Ramses
Hallo Klaus,

... ist das auch verständlich nachvollziehbar ;-)

Danke für die Info.

Gruss Rainer
AW: Summewenn mit mehr als 1 Kriterium nur per VBA
28.12.2003 18:36:20
th.heinrich
hallo Klaus,

https://www.herber.de/forum/archiv/356to360/t356237.htm

habe Dir keine formelloesung angeboten, sondern lediglich auf die RECHERCHE verwiesen. die wird m.e. aus bequemlichkeit zu selten genutzt.

leider von Dir keine antwort erhalten :-(

gruss thomas
Sorry, war nicht böse gemeint aber ....
28.12.2003 21:14:12
Klaus K.
Hi Thomas,
ich bin nun seit einigen Jahren hier und kenne die Recherche in und auswendig.
Und bevor ich Frage, suche ich grundsätzlich erstmal selbst.
Das kannst Du natürlich nicht wissen.
In diesem Thread z.B. habe ich um eine Lösung in VBA gebeten.
Mit dem Vorschlag (!) "Versuchsmal mit Summewenn" von "Achim" bin ich ich
natürlich aus "Offene Fragen" raus. Mein Problem wird also kaum noch gesehen.

Da kriegt man einen FÜRCHTERLICH DICKEN HALS !!!

Mit der Zeit reagiere ich dann etwas über.

Also, ich gelobe Besserung ;-)
Und Dir einen schönen Abend noch.
Gruss Klaus
Anzeige
alles klar :-) ot.
29.12.2003 12:05:27
th.heinrich
.

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige