我有一個 Excel 電子表格,這是我的時間表。這意味著,我有一些任務,幾乎總是一個連接的單元格,有時我連接 20 個單元格,有時只連接兩個。例子
由於每個細胞都是一小時,所以我想計算稱重的細胞計數。這意味著:如果我有一個單元格,只有一個單元格,則計為1 個,如果連接了3 個單元格,則計為3 個。 3、S2: 4、S3: 2、S4:6
我已經搜索了很長時間,但沒有找到任何可以解決問題的功能。我發現的最好的是=countif(B4:H19, "Subject1")
,但這裡基於三個連接單元的單元算作一個。你能幫我解決這個問題嗎?
感謝您提前的答覆!
答案1
實際上,您與我們共享的螢幕截圖同時包含合併和非合併儲存格,因此此問題不需要任何公式,而是需要 VBA 巨集。
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
怎麼運作的:
要么按Alt+F11或選擇 TAB 然後右右鍵單擊並從選單中點擊V查看代碼。
C奧比&磷試試這些VBA宏。
按Alt+Q返回工作表。
現在將工作簿另存為啟用巨集的檔案
*.xlsm
。在儲存格中輸入此公式
K2
並填寫。=MergedCellCount(H$2:H$17,J2)+unMergedCellCount(H$2:H$17,J2)
根據需要調整儲存格引用。