返回列表 上一主題 發帖

找出指定人數

找出指定人數

我想找出指定職級, 但修讀過一種或另一種課程的人有多少人數 ? 應如何呢 ?thx !!!!
附上附件 !!!
excel_找出人數.rar (4.03 KB)

本帖最後由 trainee 於 2011-1-29 11:15 編輯

試吓將佢哋加埋!

SUMPRODUCT((A2:A52="一級文員")*(C2:C52="中文課程")) + SUMPRODUCT((A2:A52="一級文員")*(C2:C52="英文課程"))

TOP

但係加埋的話只能計出修讀該兩個課程的總數, 不能計出人數 ( 因為有一些人是同時讀了中及英文課程), 如何能計出人數呢 ?

TOP

回復 3# yan870510


    也就是說"名字不能重複",那麼用篩選或進階篩選完後,2007有一個"移除重複"--移除重複名字後,再算個數,這樣應該也行得通吧。

TOP

回復 3# yan870510

進階篩選出全部名單
用陣列公試算出不重複數量
   
學海無涯_不恥下問

TOP

會否考慮改變編輯模式,若不縑麻煩,請參閱附圖!


TOP

本帖最後由 Andy2483 於 2023-5-12 14:20 編輯

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與字典,學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, Y, N&, i&, j&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = Range([C1], Cells(Rows.Count, 1).End(3))
'↑令Brr變數是 二維陣列,以A~C欄儲存格資料帶入陣列裡
ReDim Crr(1 To UBound(Brr), 1 To 3)
'↑宣告Crr是二維空陣列,縱向範圍同Brr陣列,橫向從1~3
For i = 1 To UBound(Brr)
'↑設順迴圈
   If i = 1 Then N = 1: For j = 1 To 3: Crr(N, j) = Brr(i, j): Next
   '↑處理標題列
   If Brr(i, 1) = "一級文員" And InStr("/中文課程/英文課程/", "/" & Brr(i, 3) & "/") Then
   '↑如果符合條件
      If Y(Brr(i, 2) & "") = "" Then
      '↑如果姓名不重複
         N = N + 1
         For j = 1 To 3: Crr(N, j) = Brr(i, j): Next
         '↑符合條件又不重複的資料寫入Crr陣列裡
         Y(Brr(i, 2) & "") = 1
         '↑令此字典裡此key的item值是 1(讓後迴圈濾重複)
      End If
   End If
Next
[E12].Resize(N, 3) = Crr
'↑令Crr陣列值從[E12]寫入儲存格裡
Set Y = Nothing: Erase Brr, Crr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

=SUM(COUNTIFS(A:A,"一級文員",C:C,{"英文課程","中文課程"}))
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題