Hallo Leute! Ich hab da mal wieder eine Frage! Wie kann ich die Anzahle ermitteln wenn jedesmal eine neue Zeile eingefüght wird? In meiner Tabelle wird über eine Userform Namen eingefügt, nun möchte ich die Anzahl der Namen ermitteln. Wenn Ihr die Tabelle seht stehen dort mehere oder können mehere Clubs eingetragen werden und dort werden Variabel die Namen dazu eingetragen. Wie ist es möglich die Anzahle der Namen ( Spieler ) zu ermitteln?
Leider ist es nicht das was ich wollte! Vieleicht habe ich mich ja auch wieder nicht richtig ausgedrückt. Habe die Datei nochmals erweitert, im Tabellenblatt Beispiel sind 3 Clubs eingetragen. Nun soll in der Spalte AS die anzahl der Spieler für den jeweiligen Club ermittellt werden. Dabei ist zu beachten das noch Spieler hinzukommem können. Ist dies über eine Formel oder nur über VBA zu lösen? Habe im moment keine
Für Tipps oder Hilfe Danke ich allen schon mal im voraus!
Hallo Heinz! Das funktioniert nicht so wie ich das möchte! Wenn ich die Formel einbaue sieht es am anfahng gut aus, doch sobald ein neuer Club und Namen eingefügt sind ist es nicht mehr das was ich gerne möchte. Mein Zitat: "Nun soll in der Spalte AS die anzahl der Spieler Nur für den jeweiligen Club ermittellt werden." Habe da was vergessen, ist markiert. Tabelle ist nochmals mit angehangen, dort ist auch der bereich bunt dargestellt was gezählt werden soll. Aber wie auch schon erwähnt ist die Tabelle variabel es könne immer neue Spieler eingetragen oder gelöscht werden.
Ich habe den BEREICH mit den NAMEN über TABELLE EINFÜGEN in eine TABELLE umgewandelt. Das müsste dann für jeden Club je eine TABELLE werden. Dann habe ich über einen Bezug auf die Spalte NAME das TEILERGEBNIS berechnet. Hier gibt es die Option 103 für die Anzahl der Einträge. ANZAHL2 hätte es aber auch getan. Ich habe dann mal noch den Code zum Einfügen einer Weiteren Tabelle und zum Eintrag der Formel für die Anzahl Spieler aufgezeichnet und etwas optimiert. Du findest ihn in Modul 6 und musst ihn an geeigneter Stelle in Deinen code einfügen. Du musst die Zeilen und die Nummer 4 für die Tabelle noch flexibel gestalten.
bei meinen Vorschlag mußt Du die zwei folgenden Makros austauschen.
Das erste ist der CommandButton2
Code:
Private Sub CommandButton2_Click() ' Club auswählen und Namen eintragen Dim rngZelle As Range Dim lngZeile As Long Dim lngZaehler As Long Dim lngSpalte As Long Dim blnVorhanden As Boolean Dim lngLetzte As Long 'falls ein OptionButton ausgewählt ist If OptionButton1.Value Xor OptionButton2.Value Then ' Club ausgewählt und Name/Vorname eingetragen If ComboBox12 <> "" And TextBox1 <> "" And TextBox11 <> "" Then ' Zeile mit Clubname suchen Set rngZelle = Columns(2).Find(ComboBox12, lookat:=xlWhole, LookIn:=xlValues) ' Clubname gefunden If Not rngZelle Is Nothing Then ' es sind noch keine Namen eingetragen If rngZelle.Row + 2 > rngZelle.End(xlDown).Row Then ' Zeile einfügen Rows(rngZelle.Row + 2).Insert shift:=xlDown ' Name und Vorname in die neue Zeile rngZelle.Offset(2, -1) = TextBox1 rngZelle.Offset(2, 0) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(rngZelle.Offset(1, -1), rngZelle.Offset(1, 46)).Copy rngZelle.Offset(2, -1).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' Füllfarbe zurücksetzen, damit Spalten für Gesamt nicht gelb formatiert sind Range(rngZelle.Offset(2, -1), rngZelle.Offset(2, 46)).Interior.ColorIndex = xlNone rngZelle.Offset(1, 43) = 1 Else ' Schleife über alle Namen, die zum betreffenden Club gehören For lngZaehler = rngZelle.Offset(2, 0).Row To rngZelle.End(xlDown).Row ' Name und Vorname stimmen mit TextBoxen überein If Cells(lngZaehler, 1) = TextBox1 And Cells(lngZaehler, 2) = TextBox11 Then ' Variable auf True setzen blnVorhanden = True ' Schleife verlassen Exit For End If Next lngZaehler ' Variable ist True If blnVorhanden Then MsgBox "Diesen Spieler gibt es bereits" Else ' nach dem letzten Spieler eine Zeile einfügen Rows(rngZelle.End(xlDown).Row + 1).Insert shift:=xlDown ' Name und Vorname in die neue Zeile Cells(rngZelle.End(xlDown).Row + 1, 1) = TextBox1 Cells(rngZelle.End(xlDown).Row + 1, 2) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(Cells(lngZaehler - 1, 1), Cells(lngZaehler - 1, 46)).Copy Cells(lngZaehler, 1).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False rngZelle.Offset(1, 43) = lngZaehler - rngZelle.Offset(2, 0).Row + 1 End If End If
'Es muß die Spalte entsprechend dem Geschlecht angegeben werden If OptionButton1.Value Then lngSpalte = 7 ElseIf OptionButton2.Value Then lngSpalte = 13 End If 'und die letzte Zeile entsprechend dem Geschlecht gesucht werden With Worksheets("Auswertung") lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, lngSpalte)), .Cells(.Rows.Count, lngSpalte).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 1 .Cells(lngLetzte, lngSpalte) = TextBox1 .Cells(lngLetzte, lngSpalte).Offset(, 1) = TextBox11 .Cells(lngLetzte, lngSpalte).Offset(, 2) = ComboBox12 End With ' TextBoxen und Set-Variable leeren TextBox1 = "" TextBox11 = "" Set rngZelle = Nothing 'die Buttons auf false setzen OptionButton1.Value = False OptionButton2.Value = False ComboBoxenFuellen End If Else MsgBox "Bitte Club auswählen und Namen/Vornamen eintragen" End If 'falls kein Geschlecht ausgewählt Else MsgBox "Das Geschlecht auswählen!" End If End Sub
und CommandButton7
Code:
Private Sub CommandButton7_Click() Dim lngLetzte As Long
If TextBox10 <> "" Then 'Ist die Zelle B4 leer? With Worksheets("Beispiel") If .Cells(4, 2) = "" Then .Cells(4, 2) = TextBox10 .Cells(5, 45) = 0 Else lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 2 .Range("A4:AR5").Copy .Cells(lngLetzte, 1) .Cells(lngLetzte, 2) = TextBox10 .Cells(lngLetzte, 45).Offset(1, 0) = 0 Application.CutCopyMode = False End If End With 'es ist günstiger, die Tabelle Auswertung nach der zweiten If-Abfrage zu befüllen, da nur einmal der Code nötig ist With Worksheets("Auswertung") lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 1 .Cells(lngLetzte, 2) = TextBox10 End With Else MsgBox "Kein neuer Club eingetragen!" End If ComboBoxenFuellen End Sub
Da bei beiden Makros jeweils nur 2 Codezeilen eingefügt wurden habe ich darauf verzichtet, sie zu kommentieren. Wenn Du die bisherigen mit den neuen vergleichst, findest Du raus, was ich geändert habe. Und das zu verstehen, ist nicht schwer.
Hallo! Da bin ich wieder habe beides getestet und finde beides super. Danke nochmals für die Hilfe von Euch. Habe aber die nächsten fragen an die Experten. Wie kann ich die Summe in Spalte AR errechnen? Heißt die Summen in Spalte AM von den Club und den jewiligen Spielern werden addiert und in Spalte AR eingetragen. So das ich weiß wieviel Holz die Manschaft geworfen hat. Da die Tabelle ja Dynamisch ist, hab ich dort meine probleme. Hab das mal in der Tabelle farbig dargestellt. Das andere ist, es soll dann nochmals gerechnet werden und das in der Spalte AS. Die Formel wäre etwa so = SUMME AR (Holz Club)/AS (Anzahl der Spieler). Wie geht das. Tipps und Vorschläge gerne Willkommen.
(26.06.2014, 23:13)michel34497 schrieb: Wie kann ich die Summe in Spalte AR errechnen? Heißt die Summen in Spalte AM von den Club und den jewiligen Spielern werden addiert und in Spalte AR eingetragen.
da würde ich mal mit SUMMEWENN oder SUMMEWENNS oder SUMMENPRODUKT oder mit Pivot-Tabelle (finde ich am einfachsten und flexibelsten) Versuche machen.