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-Key: 300623

Url: https://administrator.de/contentid/300623

Printed on: April 24, 2024 at 02:04 o'clock

Member: MrCount
MrCount Apr 01, 2016 at 12:54:11 (UTC)
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
Mitglied: 114757
114757 Apr 01, 2016 updated at 13:01:20 (UTC)
Goto Top
Here you go ...
=ZÄHLENWENNS($B:$B;"Status1";$C:$C;"Name1")  
Gruß jodel32
Member: chef1568
chef1568 Apr 01, 2016 at 13:08:44 (UTC)
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ß
Member: chef1568
chef1568 Apr 01, 2016 at 13:17:28 (UTC)
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
Member: MrCount
MrCount Apr 04, 2016 at 06:02:31 (UTC)
Goto Top
Von dem "Filterstatus" liest man in der Aufgabenstellung aber nix...
Member: Biber
Biber Apr 04, 2016 at 10:20:08 (UTC)
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
Member: chef1568
chef1568 Apr 13, 2016 updated at 12:07:00 (UTC)
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