Board logo

標題: 標示重複值 [打印本頁]

作者: leiru    時間: 2019-12-24 14:45     標題: 標示重複值

如何在C欄及D欄設定公式,兩種不同重複值顯示
作者: leiru    時間: 2019-12-24 15:35

不好意思,補充說明:
B欄內同一號碼且A欄內不同代碼,則C2=1,C3=2,C3=3;D2和D3和D4=3
B欄內同一號碼且A欄同代碼,則C7和C8=1;D7和D8=1
作者: 准提部林    時間: 2019-12-28 10:28

C2:
=COUNTIF(B$1:B2,B2)

D2:
=COUNTIF(B:B,B2)
作者: Andy2483    時間: 2023-6-6 14:03

本帖最後由 Andy2483 於 2023-6-6 14:09 編輯

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

執行前:
[attach]36527[/attach]

執行結果:
[attach]36528[/attach]


Option Explicit
'=COUNTIF(B$1:B2,B2):回傳 上方的儲存格範圍中同當列儲存格值的個數
'=COUNTIF(B:B,B2):回傳 固定的儲存格範圍中同當列儲存格值的個數


Sub TEST() '2個陣列方式
Dim Brr, Crr, Y, i&, T$, R&, N&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是字典
Brr = Range([B2], Cells(Rows.Count, "B").End(3))
'↑令Brr變數是 二維陣列,以B欄儲存格值帶入
R = UBound(Brr): ReDim Crr(1 To R, 1 To 2)
'↑令R變數是 Brr陣列縱向最大索引列號,
'令Crr變數是 二維空陣列,縱向範圍同Brr陣列,橫向1~2

For i = 1 To R: T = Brr(i, 1): N = Y(T) + 1: Crr(i, 1) = N: Y(T) = N: Next
'↑設順迴圈!令T變數是Brr陣列值,令N變數是以T變數查Y字典item值累加1,
'令Crr陣列第1欄寫入N變數值,令在Y字典裡T變數key其item值是N變數值

For i = 1 To R: Crr(i, 2) = Y(Brr(i, 1)): Next
'↑設順迴圈!令Crr陣列第2欄寫入(以Brr陣列值查Y字典得到的item值)
[C2].Resize(R, 2) = Crr
'↑令從[C2]開始的範圍儲存格寫入Crr陣列值
End Sub

Sub TEST_1() '1個陣列方式
Dim Brr, Y, i&, T$, R&, N&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是字典
Brr = Range([B2], Cells(Rows.Count, "A").End(3))
'↑令Brr變數是 二維陣列,以A~B欄儲存格值帶入
R = UBound(Brr)
'↑令R變數是 Brr陣列縱向最大索引列號
For i = 1 To R: T = Brr(i, 2): N = Y(T) + 1: Brr(i, 1) = N: Y(T) = N: Next
'↑設順迴圈!令T變數是第2欄Brr陣列值,令N變數是以T變數查Y字典item值累加1,
'令Brr陣列第1欄寫入N變數值(取代掉原陣列值),
'令在Y字典裡T變數key其item值是N變數值

For i = 1 To R: Brr(i, 2) = Y(Brr(i, 2)): Next
'↑設順迴圈!令Brr陣列第2欄寫入(以第2欄Brr陣列值查Y字典得到的item值)
[C2].Resize(UBound(Brr), 2) = Brr
'↑令從[C2]開始的範圍儲存格寫入Brr陣列值
End Sub

A~B欄以A欄為基準排序後重新執行結果:
[attach]36529[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)