返回列表 上一主題 發帖

[發問] 請教排除重複人名之後,計算人數問題

[發問] 請教排除重複人名之後,計算人數問題

計算人名.zip (6.69 KB) 1.資料是大量的有上千筆,每一個儲存格有1個名字,也有2個名字、3個名字、4個名字、5個.....不等。
2.想要排除重複的人名之後,A欗實際有幾人,請各位先進指導,謝謝
julie

(輸入編號12156) google網址:https://hcm19522.blogspot.com/
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與字典,用字典記錄欄號與列號的學習方案如下,請各位前輩指教
執行前:


執行結果:


Option Explicit
Sub TEST_A()
Dim 資料陣列, 空陣列, 字典, i&, j%, 字串分割一維陣列, 參賽得獎者, 名次%
Dim 空陣列欄號%, 空陣列列號&, 參賽得獎人數%, 名次數&, 參賽得獎人次&
Set 字典 = CreateObject("Scripting.Dictionary")
資料陣列 = Range([B2], [A65536].End(xlUp))
ReDim 空陣列(1000, 1000)
For i = 1 To UBound(資料陣列)
   名次 = Val(資料陣列(i, 2))
   空陣列列號 = 字典(名次)
   If 空陣列列號 = 0 Then
      名次數 = 名次數 + 1
      空陣列列號 = 名次數
      字典(名次) = 空陣列列號
      空陣列(空陣列列號, 0) = 名次
   End If
   字串分割一維陣列 = Split(資料陣列(i, 1) & " ", " ")
   For Each 參賽得獎者 In 字串分割一維陣列
      If 參賽得獎者 = "" Then GoTo i01
      空陣列欄號 = 字典(參賽得獎者)
      If 空陣列欄號 = 0 Then
         參賽得獎人數 = 參賽得獎人數 + 1
         空陣列欄號 = 參賽得獎人數
         字典(參賽得獎者) = 空陣列欄號
         空陣列(0, 空陣列欄號) = 參賽得獎者
      End If
      空陣列(空陣列列號, 空陣列欄號) = 空陣列(空陣列列號, 空陣列欄號) + 1
      參賽得獎人次 = 參賽得獎人次 + 1
i01: Next
Next
With [E4].Resize(名次數 + 1, 參賽得獎人數 + 1)
   .Value = 空陣列
   .Item(1) = "名次\參賽得獎者"
   .Borders.LineStyle = xlContinuous
   .EntireColumn.AutoFit
End With
MsgBox "參賽得獎人數 " & 參賽得獎人數 & " 人 , 參賽得獎人次 " & 參賽得獎人次 & " 人次"
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

排除重複之後 ,A欗有幾人

55-4185.rar (9.96 KB)

排除重複之後 ,A欗有幾人

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 1# julieh96590

計算人名.rar (7.47 KB)

D5陣列公式如下
=IFERROR(TRIM(MID(SUBSTITUTE(INDEX(A:A,INT(MIN((COUNTIF(D$4:D4,TRIM(MID(SUBSTITUTE(A$2:A$19," ",REPT(" ",99)),COLUMN(A:I)*99-98,99)))>0)*9999+ROW(A$2:A$19)*10+COLUMN(A:I))/10))," ",REPT(" ",99)),
MOD(MIN((COUNTIF(D$4:D4,TRIM(MID(SUBSTITUTE(A$2:A$19," ",REPT(" ",99)),COLUMN(A:I)*99-98,99)))>0)*9999+ROW(A$2:A$19)*10+COLUMN(A:I)),10)*99-98,99)),"")
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題