chef1568
Goto Top

Excel Formel: Zähle Texteinträge mit 2 Bedingungen

Hallo zusammen ich habe eine Tabelle wie folgt aufgebaut:

SpalteA | SpalteB | SpalteC |
---------------------------------------------
1. Text1 | Status1 | Name1 |
2. Text2 | Status2 | Name1 |
3. Text3 | Status1 | Name2 |
4. Text4 | Status1 | Name2 |
5. Text5 | Status2 | Name2 |
6. Text6 | Status1 | Name1 |
7. Text7 | Status2 | Name2 |


--> Ziel ist das Zählen der eingeblendeten SpalteC in Abhängigkeit SpalteB

Bisher habe ich das Ermitteln der Anzahl in SpalteC mit folgender Formel umgesetzt:
=SUMMENPRODUKT(TEILERGEBNIS(3;INDIREKT("I"&ZEILE(10:63342)))*(I10:I63342=Name1))  

Danach sieht das Ergebnis wie folgt aus:
ERGEBNIS = 3

Anschaulicher dargestellt:
SpalteA | SpalteB | SpalteC |
---------------------------------------------
1. Text1 | Status1 | Name1 |
2. Text2 | Status2 | Name1 |
6. Text6 | Status1 | Name1 |

Nun müsste ich noch zusätzlich den Status1 zählen und als Ergebnis 2 ausgeben
Das Ergebnis soll sein: ERGEBNIS = (SpalteC = "Name1") & (SpalteB = "Status1")


gruß feder

Content-ID: 300623

Url: https://administrator.de/forum/excel-formel-zaehle-texteintraege-mit-2-bedingungen-300623.html

Ausgedruckt am: 25.12.2024 um 03:12 Uhr

MrCount
MrCount 01.04.2016 um 14:54:11 Uhr
Goto Top
Hi,

vielleicht hilft dir die Funktion "ZÄHLENWENN" weiter: https://support.office.com/de-de/article/Z%C3%84HLENWENN-Funktion-e0de10 ...

Gruß und schönes Wochenende face-smile
114757
114757 01.04.2016 aktualisiert um 15:01:20 Uhr
Goto Top
Here you go ...
=ZÄHLENWENNS($B:$B;"Status1";$C:$C;"Name1")  
Gruß jodel32
chef1568
chef1568 01.04.2016 um 15:08:44 Uhr
Goto Top
hallo jodel32,

die Funktioniert soweit schon - jedoch wird hierbei der aktive Filterstatus nicht berücksichtigt.
Die Funktion TEILERGEBNIS beachtet hingegen den Filterstatus.

gruß
chef1568
chef1568 01.04.2016 um 15:17:28 Uhr
Goto Top
Lösung:

=SUMMENPRODUKT(TEILERGEBNIS(3;INDIREKT("I"&ZEILE(10:63342)))*(I10:I63342=Name1);TEILERGEBNIS(3;INDIREKT("G"&ZEILE(10:63342)))*(G10:IG63342=Status1)))  

ist zwar sehr "dirty", funktioniert aber face-smile

gruß feder
MrCount
MrCount 04.04.2016 um 08:02:31 Uhr
Goto Top
Von dem "Filterstatus" liest man in der Aufgabenstellung aber nix...
Biber
Biber 04.04.2016 um 12:20:08 Uhr
Goto Top
Moin chef1568,

... und warum jetzt die Bedingungen in Spalte G und H (also deiner ersten und dritten Spalte sind), während wir doofen Glaskugelbenutzer von der zweiten und dritten Spalte ausgingen, auch das bleibt erstmal ungeklärt.

Damit wir uns nicht missverstehen:
- ich finde es gut, wie du deine Frage formuliert und dargestellt hast.
- ich finde es gut, dass du eine selbst gefundene Lösung unds allen zur Verfügung gestellt hast.

Aber:
- die formulierte Problemdarstellung passt nicht zur Lösung
- das undokumentierte und nicht für künftige Versionen gesicherte (und auch nicht in LibreOffce/OpenOffice nachprogrammierte) Verhalten von Excel beim Zusammenspiel von TEILERGEBNIS() und INDIREKT() "funktioniert" zwar, aber... wie robust ist das?

Wenn du noch die Nerven hast, dann skizziere bitte mal die "richtige" Problemstellung und lass und noch mal gemeinsam draufschauen.

Grüße
Biber
chef1568
chef1568 13.04.2016 aktualisiert um 14:07:00 Uhr
Goto Top
Ich habe nun die Funktion per Makro umgesetzt da alle Versuche mit Formeln relativ Ressourcenintensiv waren.
Per Makro ist die Funktion relativ einfach umgesetzt

Option Explicit

Sub chkAuslastungStatus()
    Dim Bereich As Range                'ges. eingeblendeter Bereich  
    Dim FirstRow, LastRow As Long       'Erste/Letzte Reihe im sichtbaren Bereich  
    Dim iRow, iNAME As Long              'Laufvariablen  
    Dim NAME As String                'jeweiliger selektierter Inbetriebnehmer  
    Dim AnzSOLL, AnzIST As Integer      'Soll- und IST-Auslastung  
    
    
    'Ermittlung letzter benutzter und sichtbaren Zeile  
    LastRow = Worksheets("Planung").Cells(Rows.Count, "B").End(xlUp).Row  
    'Wenn Filterergebnis leer  
    If LastRow <= 9 Then Exit Sub
    
    'erste sichtbare Zeile  
    Set Bereich = Worksheets("Planung").AutoFilter.Range.SpecialCells(xlCellTypeVisible)  
    'Wenn Filterergebnis leer  
    If Bereich Is Nothing Then Exit Sub
    FirstRow = Bereich.Areas(2).Row


    For iNAME = 3 To 7   'Prüfe jeweiligen Namen aus der Vorgabe Zelle F3-F7  
        'Name im aktuellen Schleifendurchlauf  
        NAME = Worksheets("Planung").Range("F" & iNAME).Value  
        AnzSOLL = 0
        AnzIST = 0
        
        For iRow = FirstRow To LastRow         'Durchlaufe eingeblendeten Bereich  
            If Not Rows(iRow).Hidden Then   'Prüfe ob im Bereich die jeweilige Zeile eingeblendet ist  
                If Worksheets("Planung").Range("I" & iRow).Value = NAME Then  
                    AnzSOLL = AnzSOLL + 1
                    If Worksheets("Planung").Range("G" & iRow).Value = "abgeschlossen" Then  
                        AnzIST = AnzIST + 1
                    End If
                End If
            End If
        Next
        Worksheets("Planung").Range("G" & iNAME) = AnzSOLL & " / " & AnzIST  
    Next
    
End Sub