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.
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
K2
und 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.