返回列表 上一主題 發帖

[發問] 刪除重複後,尋找重複客戶號碼加總值

本帖最後由 GBKEE 於 2016-10-2 09:03 編輯

回復 10# Changbanana
不用字典物件 的寫法
  1. Option Explicit
  2. Sub Ex()
  3.     Dim r As Integer, Ar(), i As Integer
  4.     '*******前置作業
  5.     With Range("A:A").CurrentRegion
  6.             'CurrentRegion :目前區域,是指以任意空白列及空白欄的組合為邊界的範圍
  7.             .Sort key1:=.Cells(1), order1:=xlAscending, key2:=.Cells(4), order1:=xlAscending, header:=xlYes    '排序
  8.             .Columns(1).AdvancedFilter ACTION:=xlFilterCopy, COPYTORANGE:=Cells(1, Columns.Count), Unique:=True
  9.             '進階篩選:進階不重複資料,至於工作表的最右邊的欄位
  10.     End With
  11.     '************************
  12.     r = Cells(Rows.Count, Columns.Count).End(xlUp).Row                                          '計算 篩選 資料數 (客戶編號)
  13.     ReDim Ar(1 To r)                                                                                                    '重置陣列大小為 (客戶編號)個數
  14.     Ar(1) = Application.Transpose(Application.Transpose(Range("A1").Resize(, 6)))   '表頭 置入陣列
  15.     For i = 2 To r                                                                                                             '迴圈 (客戶編號)
  16.         With Range("A:A")
  17.             .Replace Cells(i, Columns.Count), "=1/0"                                                          '將 (客戶編號) 改為 錯誤值
  18.             With .SpecialCells(xlCellTypeFormulas, xlErrors).Resize(, 6)                           '錯誤值的範圍
  19.                 .Columns(1) = Cells(i, Columns.Count)                                                        ' '將  錯誤值 改回 原 客戶編號
  20.                 Ar(i) = Array(.Cells(1).Value, .Cells(2).Value, .Cells(3).Value, .Cells(4).Value, Application.Sum(.Columns(5)), .Cells(.Rows.Count, 6).Value)                                                                                                                                      'Application.Sum(.Columns(5))  加總(客戶編號)的CASH
  21.             End With
  22.         End With
  23.     Next
  24.     With Range("I1")
  25.         .Resize(r, 6).EntireColumn = ""    '清除舊有資料
  26.         .Resize(r, 6) = Application.Transpose(Application.Transpose(Ar))                     '範圍內導入轉置2次的陣列
  27.     End With
  28.     Cells(1, Columns.Count).EntireColumn = ""    '清除舊有資料
  29. End Sub
  30. '*********************************************************************
  31. Sub Ex1()
  32.     Dim Rng As Range, Ar(), i As Integer
  33.     '*******前置作業
  34.     With Range("A:A").CurrentRegion
  35.             'CurrentRegion :目前區域,是指以任意空白列及空白欄的組合為邊界的範圍
  36.             .Sort key1:=.Cells(1), order1:=xlAscending, key2:=.Cells(4), order1:=xlAscending, header:=xlYes    '排序
  37.     End With
  38.     '************************
  39.     i = 1
  40.     ReDim Ar(1 To i)                                                                                                    '重置陣列大小為 (客戶編號)個數
  41.     Ar(1) = Application.Transpose(Application.Transpose(Range("A1").Resize(, 6)))   '表頭 置入陣列
  42.     Set Rng = Range("A2")
  43.     Do While Rng <> ""                                            '客戶編號 <> ""
  44.         i = i + 1
  45.         ReDim Preserve Ar(1 To i)
  46.         With Rng
  47.                 Ar(i) = Array(.Cells(1).Value, .Cells(1, 2).Value, .Cells(1, 3).Value, .Cells(1, 4).Value, .Cells(1, 5).Value, .Cells(.Rows.Count, 6).Value)
  48.         End With
  49.         Do While Rng = Rng.Offset(1)                          '同一 (客戶編號)
  50.             Ar(i)(4) = Ar(i)(4) + Rng.Cells(1, 5)               '加總同一 (客戶編號)的CASH
  51.             Ar(i)(5) = Rng.Cells(2, 6)
  52.             Set Rng = Rng.Offset(1)                                '下一個客戶編號
  53.         Loop
  54.         Set Rng = Rng.Offset(1)                                     '下一個客戶編號
  55.     Loop
  56.     With Range("I1")
  57.         .Resize(, 6).EntireColumn = ""    '清除舊有資料
  58.         .Resize(i, 6) = Application.Transpose(Application.Transpose(Ar))                     '範圍內導入轉置2次的陣列
  59.     End With
  60. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題