1- 假如 b c d e 欄相同的,則累加 f 欄。
2- 只要 b c d e 欄有一項不同的,則分列出來。
如:
A B C D E F
日期 崗位 姓名 顧客 工作地點 銷售金額
10/12 A 張三 陳生 店一 50000
10/12 B 張三 陳生 店二 40000
10/12 A 張三 李生 店一 30000
10/12 C 張三 李生 店一 20000
10/12 C 張三 李生 店一 10000
10/12 A 張三 陳生 店一 65000
如果:
A B C D E F
日期 崗位 姓名 顧客 工作地點 銷售金額
10/12 A 張三 陳生 店一 115000
10/12 B 張三 陳生 店二 40000
10/12 A 張三 李生 店一 30000
10/12 C 張三 李生 店一 30000
Option Explicit
Sub TEST()
Dim Brr, T, Y, xR, i&, N&, j%
'↑宣告變數:(Brr,T,Y,xR)是通用型變數,(i,N)是長整數變數,j是短整數變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y這通用型變數是 字典
Set xR = Range([F1], Cells(Rows.Count, 1).End(3)): Brr = xR
'↑令xR這通用型變數是 [F1]到A欄最後有內容儲存格,
'令Brr這通用型變數是 二維陣列,以xR變數值帶入陣列裡
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
For j = 1 To 5: T = T & "|" & Brr(i, j): Next
'↑設順迴圈!j從1到 5:令T這通用型變數是 自身連接"|" 再連接
'i迴圈列j迴圈欄Brr陣列值之後的新字串
If Y(T) = "" Then
'↑如果以T變數查Y字典的item值是 空字元??
Y(T) = Y.Count + 1: N = Y(T)
'↑令以T變數為key,item是 Y字典key數量+1的數值,
'令N這長整數變數是 T變數查Y字典的item值
For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
'↑設順迴圈!j從1到 6:令N變數列第j變數欄Brr陣列值是
'i變數列第j變數欄Brr陣列值
Else
N = Y(T): Brr(N, 6) = Brr(N, 6) + Brr(i, 6)
'↑令N這長整數變數是 T變數查Y字典的item值,
'N變數列第6欄Brr陣列值是自身 + i變數列第6欄Brr陣列值
End If
T = ""
'↑令T變數是空字元
Next
With xR.Offset(0, 8).Resize(Y.Count + 1, 6)
'↑以下是關於xR變數向右偏移8欄後從第1格擴展,
'擴展向下Y字典key數量+1列,向右擴展6欄,關於此範圍儲存格程序
.EntireColumn.ClearContents
'↑令這些儲存格所在的欄位儲存格值清空
.Value = Brr
'↑令這些儲存格值以Brr陣列值帶入
End With
Set Y = Nothing: Set xR = Nothing: Erase Brr
'↑釋放變數
End Sub