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

SUMMEWENN in SumIf

SUMMEWENN in SumIf
23.02.2004 10:38:50
André L.
Hallo,
Ich möchte eine Summewenn-berechnung
in einen VBA-Code eingeben, der sich
auf die gerade aktivivierten Zellen
bezieht.
Wer hat da eine Lösung.
Schon mal Danke im Voraus.
Gruss
AndréL.

https://www.herber.de/bbs/user/3882.xls

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SUMMEWENN in SumIf
23.02.2004 11:17:31
Alex K.
Hallo Andre,
zum Setzen von Formeln hier mal ein Beispiel:

Selection.FormulaLocal = "=Summewenn(" 'hier deinen Paramater zusammenbauen

Leider hast du nicht angegeben, was wie zusammengezählt werden soll. Und vor allem, auf Grund welches Ereignisses die Summewenn eingetragen werden soll.
AW: SUMMEWENN in SumIf
23.02.2004 11:34:51
André L.
Hallo Alex,
in meiner Urlaubstabelle zählt
der Befehl die gerade eingegebenen
Tage. Nun muss ich aber diese Tage
mit den Arbeitstagen im Schichtplan
abgleichen.
For r = z To z2
Cells(r, 1).Select
Cells(r, sp) = "U"
ut = ut + 1
' <<<<<<<<<<< Hier soll jetzt die SumIf Function zum Tragen kommen.
' <<<<< und aus dem Grundplan die wirklichen Urlaubstage(Arbeitstage)suchen.
TextBox3 = "" & ut & "Tage" ' <<<< Gibt Tage in der UF und Blatt"Url_Tab1" aus.
Next r
Als Formel in meiner Tabelle funktioniert es, aber nur gesamt,
brauche aber die Eingabe.
Gruss AndréL.
Anzeige
AW: SUMMEWENN in SumIf
23.02.2004 13:18:13
Alex K.
HAllo Andre,
kann sein, dass ich heute ein Brett vorm Kopf habe. Bitte gib mir mal ein Beispiel für Summewenn-Formel, welche du an der entsprechenden Stelle eingefügt haben willst. Gib bitte auf Grundlage der Variablen in diesem Makro an, welchen Bereich du mit welchen Suchkriterium durchsuchen willst und welcher Bereich addiert werden soll.
Danke
AW: SUMMEWENN in SumIf
23.02.2004 13:29:49
André L.
Hallo Alex,
Diese Formel gibt mir an, wieviel U-Tage der Mitarbeiter
im ges.Jahr eingetragen hat.
=SUMMEWENN(Tabelle1!E2:E366;"U";Grundplan1!E2:E366)
Mit dem Formular in Tabelle1 gebe ich den Mitarbeiter und
den Zeitraum ein. Bis jetzt "sagt" die TextBox3 die ges.Tage
( zB.3.1.-5.1. = 3Tage ) laut Grundplan hat er aber nur zB.
2 Arbeitstage!!
Danke André
PS. Vielleicht habe ich ja das Brett vorm Kopf. Oder kann mein Problem
nicht richtig erklären.
Anzeige
AW: SUMMEWENN in SumIf
23.02.2004 14:40:21
Alex K.
Hallo Andre,
zwar immer noch schlecht erklärt, aber ich habe es kapiert :-)
Ersetze die Prozedur "CommandButton1_Click()" im Forumlar mit dieser

Private Sub CommandButton1_Click()
Dim dat1 As Date, dat2 As Date
Dim z As Integer
Dim z2 As Integer
Dim sp As Integer
Dim r As Variant
Dim ut As Double
Dim Mit As String
Dim mitRng As Range
Dim t As Integer
Dim Grundplan1
dat1 = Me.ComboBox2
dat2 = Me.ComboBox3
Mit = Me.ComboBox1
Worksheets("Tabelle1").Activate
Application.ScreenUpdating = False
z = 2 '<<<<<< ab Zeile 2
Do While Cells(z, 1) <> dat1
z = z + 1
Loop
z2 = 1
Do While Cells(z2, 1) <> dat2
z2 = z2 + 1
Loop
sp = 2
Do While Cells(1, sp) <> Mit
sp = sp + 1
Loop
For r = z To z2
Cells(r, 1).Select
Cells(r, sp) = "U"
'wird nicht mehr benötigt, da Rechnung auf Grund der tatsächlichen
'Arbeitstage errechnet wird
'ut = ut + 1
With Worksheets("Grundplan1")
'Mitarbeiter-Spalte in Grundplan1 suchen
Set mitRng = .Range("B1:AM1").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If mitRng Is Nothing Then
MsgBox "Der Mitarbeiter '" & ComboBox1.Value & "' wurde im Grundplan1 " _
& "nicht gefunden.", vbExclamation, "Urlaub eintragen"
Exit Sub
End If
'es wird davon ausgegangen, dass Datum in Tabelle1 und Grundplan1 identisch
'sind und in der gleichen Zeile beginnen
ut = WorksheetFunction.CountIf(.Range(.Cells(z, mitRng.Column), _
.Cells(z2, mitRng.Column)), 1)
End With
Next r
TextBox3 = ut & " Tage"
'Activate ist nicht notwendig, da direkt auf die Tabelle
'zugegriffen werden kann. Sie muss vorher nicht expliziet
'aktiviert werden. Zum Zugriff direkt über das Objekt ist folgende
'Syntax nötig: Worksheets("Url_Tab1").Cells(t, 1) oder wenn vorher
'ein With Worksheets("Url_Tab1") gesetzt wird, dann direkt über
'.Cells(t, 1)
With Worksheets("Url_Tab1")
t = .Range("A65536").End(xlUp).Row + 1
.Cells(t, 1) = ComboBox1.Value
.Cells(t, 3) = ComboBox2.Value
.Cells(t, 5) = ComboBox3.Value
.Cells(t, 6) = TextBox3.Value
End With
Application.ScreenUpdating = True
End Sub

Anzeige
Optimierung
23.02.2004 14:56:51
Alex K.
Hallo Andre,
habe noch etwas übersehen. Hier der optimierte Code:

Private Sub CommandButton1_Click()
Dim dat1 As Date, dat2 As Date
Dim z As Integer
Dim z2 As Integer
Dim sp As Integer
Dim r As Variant
Dim ut As Double
Dim Mit As String
Dim mitRng As Range
Dim t As Integer
Dim Grundplan1
dat1 = Me.ComboBox2
dat2 = Me.ComboBox3
Mit = Me.ComboBox1
Worksheets("Tabelle1").Activate
Application.ScreenUpdating = False
z = 2 '<<<<<< ab Zeile 2
Do While Cells(z, 1) <> dat1
z = z + 1
Loop
z2 = 1
Do While Cells(z2, 1) <> dat2
z2 = z2 + 1
Loop
sp = 2
Do While Cells(1, sp) <> Mit
sp = sp + 1
Loop
For r = z To z2
Cells(r, 1).Select
Cells(r, sp) = "U"
'wird nicht mehr benötigt, da Rechnung auf Grund der tatsächlichen
'Arbeitstage errechnet wird
'ut = ut + 1
Next r
With Worksheets("Grundplan1")
'Mitarbeiter-Spalte in Grundplan1 suchen
Set mitRng = .Range("B1:AM1").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If mitRng Is Nothing Then
MsgBox "Der Mitarbeiter '" & ComboBox1.Value & "' wurde im Grundplan1 " _
& "nicht gefunden.", vbExclamation, "Urlaub eintragen"
Exit Sub
End If
'es wird davon ausgegangen, dass Datum in Tabelle1 und Grundplan1 identisch
'sind und in der gleichen Zeile beginnen
ut = WorksheetFunction.CountIf(.Range(.Cells(z, mitRng.Column), _
.Cells(z2, mitRng.Column)), 1)
End With
TextBox3 = ut & " Tage"
'Activate ist nicht notwendig, da direkt auf die Tabelle
'zugegriffen werden kann. Sie muss vorher nicht expliziet
'aktiviert werden. Zum Zugriff direkt über das Objekt ist folgende
'Syntax nötig: Worksheets("Url_Tab1").Cells(t, 1) oder wenn vorher
'ein With Worksheets("Url_Tab1") gesetzt wird, dann direkt über
'.Cells(t, 1)
With Worksheets("Url_Tab1")
t = .Range("A65536").End(xlUp).Row + 1
.Cells(t, 1) = ComboBox1.Value
.Cells(t, 3) = ComboBox2.Value
.Cells(t, 5) = ComboBox3.Value
.Cells(t, 6) = TextBox3.Value
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: SUMMEWENN in SumIf
23.02.2004 15:00:51
André L.
Hallo Alex,
Ich habe jetzt getestet,
ES LÄUFT !!
Entschuldigung für die schlechte Erklärung.
Vielen, vielen Dank
Dieses Forum ist wirklich Klasse.
Gruss
AndréL.
Danke für die Rückmeldung oT
23.02.2004 15:05:14
Alex K.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige