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.

ZählenWenn
#1
Guten Abend,

ich suche eine Möglichkeit, in mehreren Tabellen, die alle Unterschiedliche Namen haben, aber alle in einer Datei sind, zu Zählen wie oft ein Wert in einer bestimmten Spalte vorkommt.

Natürlich geht das in dem ich in der Formel immer addiere

ZählenWenn(Tabelle;Bereich;Kriterium)+ZählenWenn(Tabelle2;Bereich;Kriterium)+ZählenWenn(Tabelle3;Bereich;Kriterium) etc.

Aber geht das ganze auch einfacher (eleganter).

vba ist sicherlich auch eine Möglichkeit, aber die gelingt mir gerade auch nicht.

Wäre schön, wenn ich hier eine Lösung bekommen könnte


Bernd
Antworten Top
#2
Hola,
https://www.herber.de/excelformeln/src/call.pl?idx=235
Gruß,
steve1da
Antworten Top
#3
Hallo Steve,

da habe ich genau das Problem, die Tabellen haben alle unterschiedliche Namen und fangen nicht alle mit "Tabelle" an.

Dann steht der Suchbegriff halt immer nur in der Spalte "C" und das zum Glück in allen Tabellen :=)



Bernd
Antworten Top
#4
Hi,


wer lesen kann...


Zitat:Für nicht durchnummerierte Tabellen siehe die Summenformel

Nr. 234
[url=http://excelformeln.herber.de/pages/Flexible_Alternative_zur_Summierung_ueber_mehrere_Tabellen.html][/url]
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
Hey, nochmal Danke an Euch beide. Ich bin leider seit gestern unterwegs und komme erst Mittwoch dazu mir das genauer an zu schauen. Ich werde mich dann nochmal melden.

Aber ich würde das vielleicht doch noch lieber in vba machen, da ich das Ergebnis vielleicht in einem Userform einbetten will.

Hier mal mein Ansatz:

Code:
Dim adr As Range
Dim Anz As Integer
Set adr = Worksheets("Januar").Range("C1:C40")
Anz = Application.WorksheetFunction.CountIf(adr, "Socken")


Nun dazu die Fragen

1. Wie kann man das in ein Array einbauen (die Tabellen heißen von Januar bis Februar)
2. Es sind nicht nur Socken sondern mehrere bekannte Artikel
3. und es sollen nur die Freitage gezählt werden

Das Datum ist in den Spalten A und B abgebildet.

In A ist der Tag und in B das Datum wie folgt abgebildet:  01.04.2023

Wenn es einfacher geht mit einer Formel auch gerne, weil die kann ich in einer weitern Tabelle hinterlegen und dann im UserForm abbilden, wenn ich das richtig sehe, oder?




Merci 
Bernd
Antworten Top
#6
Hi,

das könnte man z.B. so machen:
Code:
Dim a As Variant
Dim b As Variant
Dim x As Variant
Dim y As Variant
Dim Anz As Long
a = Array("Januar", "Februar")
b = Array("Socken", "Hemden", "Hosen")
For Each x In a
    With Worksheets(x)
        For Each y In b
            Anz = Anz + Application.WorksheetFunction.CountIfs(.Range("C1:C40"), y, .Range("A1:A40"), "Fr")
        Next y
    End With
Next x
Debug.Print Anz

Wenn ich mir allerdings so deine Probleme anschaue, solltest du mal über deinen Dateiaufbau nachdenken.

Daten werden in Listen erfasst. Ein Datensatz ist eine Zeile. https://www.online-excel.de/excel/singsel.php?f=52

Gleichartige Daten gehören in ein Tabellenblatt. Notfalls macht man eine weitere Spalte, die den bisherigen Blattnamen hat. https://www.excel-ist-sexy.de/mehrere-ta...uswertung/

Unter Berücksichtigung dieser Vorgaben werden Auswertungen wesentlich einfacher.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#7
Hey HKindler,

habe Deine Antwort gerade erst gelesen. Und ich war wohl auf dem Richtigen weg 

Mein erster Versuch:
Code:
Dim anz As Long

anz = 0

   'Ein Variant Array deklarieren
   Dim strNamen(1 To 4) As String

   'das Array füllen
   strNamen(1) = "Januar"
   strNamen(2) = "Februar"
   strNamen(3) = "März"
   strNamen(4) = "April"

   'deklarieren einer Variant-Variable, die das Array-Element enthält
   Dim Element As Variant

   'Das gesamte Array durchlaufen
   For Each Element In strNamen
     
     anz = anz + WorksheetFunction.CountIf(Range("C1:C40"), "Socken")
     
     
     
   Next Element

  MsgBox anz

Nun werde ich Deines noch dazu Bauen (vor allem mit dem Freitag). Dann werde ich mich nochmal melden.

Aber super Dank schonmal an alle


Bernd

Hallo nochmal,

da habe ich nun aber noch ein kleines Problem   

Den Wochentag setze ich um durch ein Formatierung ("TTTT") . wie kann ich das nun abfragen?

Code:
Anz = Anz + Application.WorksheetFunction.CountIfs(.Range("C1:C40"), y, .Range("A1:A40"), "Fr")

hier muss ich irgendwie das "Fr" ersetzten, aber wie.

Danke
Bernd
Antworten Top
#8
Hi,

dann musst du dir entweder das "Fr" in der Zelle nicht durch eine entsprechende Formatierung des Datums, sondern durch eine Formel holen: Also statt =B1 verwendest du =TEXT(B1;"TTT").
Oder du verwendest in VBA statt CountIfs ein entsprechendes SumProduct. Was aber nicht so ganz einfach sein dürfte.

Aber nochmals:
Du solltest dir dringend einen anderen Dateiaufbau überlegen!
Es war noch nie gut, ein neues Blatt anzufangen, nur weil sich das Datum ändert. Ich habe dir die Links in meinem ersten Post nicht aus Spaß an der Freude rausgesucht.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • DDExcel
Antworten Top
#9
Du hast natürlich recht, aber diese "dusselige" Tabelle gibt es nun schon so viele Jahre so und soll auch nicht verändert werden (nicht meine Idee und Auffassung) aber nun werde ich es ebend umformatieren und dann sollte es klappen


Danke
Bernd
Antworten Top


Gehe zu:


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