Excel: Wiegte Zellen zählen

Excel: Wiegte Zellen zählen

Ich habe eine Excel-Tabelle, die mein Stundenplan ist. Das bedeutet, dass ich einige Aufgaben habe, die fast immer eine verbundene Zelle darstellen, manchmal verbinde ich 20 Zellen, manchmal nur zwei.Beispiel

Da jede Zelle eine Stunde dauert, wollte ich die gewogene Zellenzahl berechnen. Das heißt: Wenn ich eine Zelle habe, die nur eine Zelle ist, zählt sie als eine, wenn ich 3 angeschlossen habe, zählt sie als 3. Im Beispielbild lautet die Zellenzahl also S1: 3, S2: 4, S3:2, S4:6

Ich habe lange gesucht, aber keine Funktion gefunden, die das Problem löst. Die beste, die ich gefunden habe, ist =countif(B4:H19, "Subject1"), aber hier zählt eine Zelle, die auf drei verbundenen Zellen basiert, als eine. Können Sie mir bitte helfen, dieses Problem zu lösen?

Vielen Dank für Ihre Antwort im Voraus!

Antwort1

Tatsächlich weist der Screenshot, den Sie mit uns geteilt haben, sowohl verbundene als auch nicht verbundene Zellen auf. Daher ist für dieses Problem anstelle einer Formel ein VBA-Makro erforderlich.

Bildbeschreibung hier eingeben


   Function MergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells = True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        MergedCellCount = n
        
    End Function

    Function unMergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells <> True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        unMergedCellCount = n
        
End Function

Wie es funktioniert:

  • Drücken Sie entwederAlt+F11oder wählen Sie die TAB-Taste undRKlicken Sie mit der rechten Maustaste und wählen Sie im MenüVCode anzeigen.

  • Copy &Paste diese VBA-Makros.

  • Drücken SieAlt+Q, um zum Blatt zurückzukehren.

  • Speichern Sie die Arbeitsmappe jetzt als Datei mit Makros *.xlsm.

  • Geben Sie diese Formel in die Zelle ein K2und füllen Sie sie aus.

    =MergedCellCount(H$2:H$17,J2)+unMergedCellCount(H$2:H$17,J2)

  • Passen Sie die Zellbezüge nach Bedarf an.

verwandte Informationen