Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Count if
#1
Servus ein Gutes neues Jahr nochmals

Ich bin am Verzweifeln
mit diesem Code will ich die Formel =ZÄHLENWENN($C3:$T3;H$27) in VBA umsetzen was auch mit der ersten Codezeile
Kontrolle = Application.WorksheetFunction.CountIf(Bereich, Cells(27, Y).Value) fast einwandfrei Funktioniert das fast bedeutet ich weiß nicht warum ich die For next Schleifen brauche
wenn ich diese lösche dann bekomme ich nur Nullen geliefert mit dem könnte ich aber leben

zurück zum Ober Problem bei der nächsten Codezeile Kontrolle2 = Application.WorksheetFunction.CountIf(Bereich2, Cells(27, Y).Value)

Liefert Excel wieder nur nullen ich verstehe das einfach nicht vielleicht kann mir jemand auf die Sprünge helfen die
Mappe hänge ich zum besseren Verständnis an noch was ich weiß dass ich das alles mit der oberen Formel ganz einfach lösen kann aber ich will definitiv VBA und das muß doch zu
machen sein

Danke im Voraus für die Hilfe
Code:
Sub ZaehlenWenn()
ErsteZeile = 3
 LetzteZeile = 20
  ErsteSpalte = 4
   LetzteSpalte = 20
 
 X = 28
 Y = 8
    For Zeile = ErsteZeile To LetzteZeile
      For Spalte = ErsteSpalte To LetzteSpalte
     
             Set Bereich = Range(Cells(Zeile, ErsteSpalte), Cells(Zeile, LetzteSpalte))
             Set Bereich1 = Range(Cells(3, ErsteSpalte), Cells(3, LetzteSpalte))
             Set Bereich2 = Range(Cells(4, ErsteSpalte), Cells(4, LetzteSpalte))
             Set Bereich3 = Range(Cells(5, ErsteSpalte), Cells(5, LetzteSpalte))
            
            
                  '   =ZÄHLENWENN($C3:$T3;H$27)
                  '   =ZÄHLENWENN($C4:$T4;H$27)
            
                     Kontrolle = Application.WorksheetFunction.CountIf(Bereich, Cells(27, Y).Value)
                     Kontrolle2 = Application.WorksheetFunction.CountIf(Bereich2, Cells(27, Y).Value)
                    
                     Cells(Zeile + 25, Spalte + 4) = Kontrolle
                     Cells(Zeile + 26, Spalte + 4) = Kontrolle2
                    
   Y = Y + 1
   X = X + 1
        
        
        
                     Heimspiele = Application.WorksheetFunction.CountIf(Bereich, ">=0")
                     Auswaertsspiele = Application.WorksheetFunction.CountIf(Bereich, "")
                     SpieleSumme = SpieleSumme + Cells(Zeile + 25, 4) + Cells(Zeile + 25, 5)
            
                     Cells(Zeile + 25, 4) = Heimspiele
                     Cells(Zeile + 25, 5) = Auswaertsspiele
                     Cells(Zeile + 25, 6) = SpieleSumme
                     Cells(Zeile + 25, 3) = Cells(Zeile, 3).Value
   

   
   SpieleSumme = 0
   Next Spalte
 Next Zeile
End Sub
Grüße
aus dem schönen Bayern

Freddy

Excel 2013 Win8
Antworten Top
#2
Hallo,


hast Du eigentlich schon mal probiert, was Deine Formeln für Ergebnisse bringen?????
Die Formeln sind schon falsch, wie soll das mit VBA besser werden. Vielleicht erläuterst Du mal mit einfachen Worten, was Du eigentlich willst, dann kann man Dir auch helfen. So viel sei schon mal gesagt, der Code ist zwar nicht sehr toll, aber offensichtlich ohne Fehler.

Vielleicht als Tipp dieses:

http://www.online-excel.de/excel/singsel_vba.php?f=4

Es ist nicht unbedingt sinnvoll, so viele Variablen festzulegen, dazu noch in Kurzform und als public!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Servus Edgar

Danke für Deine Antwort

Ja ich habe die Formeln Geprüft und diese bringen absolut das Richtige Ergebnis

Es geht um folgendes zu ermitteln : es sind ja zwei Tabellen in dem Blatt die Obere und die Untere

in der unteren Tabelle wo auch die Formel greift wird gezählt wie oft eine zahl in der oberen Tabelle in jeder Zeile vorhanden ist
jede Zahl darf in der jeweiligen Zeile nur einmal eingetragen sein


ich weiß dass es mit der Formel einfacher wäre aber ich möchte das mit VBA lösen
Grüße
aus dem schönen Bayern

Freddy

Excel 2013 Win8
Antworten Top
#4
Hallo Edgar

ich hänge die Mappe nochmals an diesmal mit der Formel im Blatt

und ohne Makros hier sieht man das die Formel Funktioniert und zwar über die ganzen Zeilen und Spalten

Danke
Grüße
aus dem schönen Bayern

Freddy

Excel 2013 Win8
Antworten Top
#5
Hallo,



Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'  SpieleZaehlen
    Application.ScreenUpdating = False
  ZaehlenWenn
    Application.ScreenUpdating = True
End Sub

Sub ZaehlenWenn()
ErsteZeile = 3
 LetzteZeile = 20
  ErsteSpalte = 4
   LetzteSpalte = 20
 
 
 X = 28
    For Zeile = ErsteZeile To LetzteZeile
    
    Y = 8
      For Spalte = ErsteSpalte To LetzteSpalte
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
Servus Edgar,

Kleine Ursache große Wirkung  Du hast mir echt riesig geholfen

mit den beiden Code Zeilen ist mein Problem absolut Top gelößt

und dass nur durch das verschieben der Variablen wär ich nieeeeeeee draufgekommen

Danke




Code:
Sub ZaehlenWenn()
ErsteZeile = 3
 LetzteZeile = 20
  ErsteSpalte = 4
   LetzteSpalte = 20
 
 
    X = 28
    For Zeile = ErsteZeile To LetzteZeile
    Y = 8
    For Spalte = ErsteSpalte To LetzteSpalte

             Set Bereich = Range(Cells(Zeile, ErsteSpalte), Cells(Zeile, LetzteSpalte))
            
                     Kontrolle = Application.WorksheetFunction.CountIf(Bereich, Cells(27, Y).Value)
                     Cells(Zeile + 25, Spalte + 4) = Kontrolle
    Y = Y + 1
                     Heimspiele = Application.WorksheetFunction.CountIf(Bereich, ">=0")
                     Auswaertsspiele = Application.WorksheetFunction.CountIf(Bereich, "")
                     SpieleSumme = SpieleSumme + Cells(Zeile + 25, 4) + Cells(Zeile + 25, 5)
            
                     Cells(Zeile + 25, 4) = Heimspiele
                     Cells(Zeile + 25, 5) = Auswaertsspiele
                     Cells(Zeile + 25, 6) = SpieleSumme
                     Cells(Zeile + 25, 3) = Cells(Zeile, 3).Value
   SpieleSumme = 0
   Next Spalte
 Next Zeile
End Sub
Grüße
aus dem schönen Bayern

Freddy

Excel 2013 Win8
Antworten Top
#7
Hallo,

ansonsten wird Y niemals mehr 8!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#8
Servus Edgar

Eigentlich jetzt nach Deiner Aufklärung LOGISCH normal hätte ich selber Draufkommen sollen
Denn die meisten versuche haben  mir zwar Ergebnise geliefert aber immer um eine oder mehrere Spalten nach rechts versetzt
und das war es Variable vor der Schleife und es fängt in jeder Zeile wieder von vorne an ansonsten zählt sie weiter so wie bei mir


Hätte es geholfen wenn ich Y am ende wieder auf Null gesetzt hätte ? muss ich mal versuchen

Danke nochmals man lernt immer wieder dazu
Grüße
aus dem schönen Bayern

Freddy

Excel 2013 Win8
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste