Board logo

標題: [發問] 同筆訂單計算加總 [打印本頁]

作者: prince0413    時間: 2018-10-20 19:28     標題: 同筆訂單計算加總

各位大大
辛苦了
小弟每週都要統整業務人員的績效點數
但每筆都是手動KEY入資料+手動計算總業績
請問有什麼公式可以讓我不用在每個人每一筆去手動加總呢?

附圖說明:
[attach]29565[/attach]

一開始我把資料表依照業務人員的編號做排序
接著要在J欄(點數加總)計算B欄(業務人員)這個月的總點數(I欄)

剛接觸資料處理的工作,我都是用眼力一筆一筆的加總點數
想詢問大大們是否有更快的方式能夠更有效率的把結果計算出來呢?


附上檔案:
[attach]29566[/attach]
作者: faye59    時間: 2018-10-20 22:14

回復 1# prince0413


   
這樣?
  1. Private Sub CommandButton1_Click()
  2. Application.ScreenUpdating = False
  3. [N2:O10000] = ""
  4. For Each aa In Range([B2], [B2].End(xlDown))
  5. For i = 1 To Application.CountA(Range("N:N"))
  6. If aa = Cells(i, 14) Then
  7. Cells(i, 15) = Cells(i, 15) + aa.Offset(, 7)
  8. ElseIf Cells(i + 1, 14) = "" Then
  9. Cells(i + 1, 14) = aa.Offset(, 0)
  10. Cells(i + 1, 15) = aa.Offset(, 7)
  11. End If
  12. Next
  13. Next
  14. End Sub
複製代碼

作者: hcm19522    時間: 2018-10-21 10:01

=IF(COUNTIF(B$2:B2,B2)=1,SUMIF(B:B,B2,I:I),"")
作者: prince0413    時間: 2018-10-21 14:48

回復 3# hcm19522


  謝謝您
但是我把公式貼上往下拉讓每個儲存格對應後
發現有些顯示的數字不一樣耶
請問大大是為什麼呢?
作者: prince0413    時間: 2018-10-21 14:52

本帖最後由 prince0413 於 2018-10-21 14:59 編輯

回復 2# faye59


    非常感謝高手
這就是我想要的
請問可以解釋一下您撰寫的程式碼嗎?
因為每個禮拜都會更新資料進去
通常會多出好幾筆新的資料出來(有些業務人員都是快月底才會開始衝業績)
想說是哪段程式碼在控制計算範圍與結果的顯示呢
還是您寫給我的這段程式碼就已經足夠應付1000筆資料以內了呢??
麻煩您解惑了
非常感恩
作者: faye59    時間: 2018-10-23 19:30

回復 5# prince0413


   
我寫得好像沒有上限值(至少能到65536筆)
這段程式碼沒有很活
所以有如人名Key錯、欄位不對、切換頁不對...等都可能造成程序錯誤
需要修正再給多點資訊及可增加
  1. Private Sub CommandButton1_Click()'開始按鈕程式
  2. Application.ScreenUpdating = False'關閉刷頻
  3. [N2:O10000] = ""'清除範圍資料
  4. For Each aa In Range([B2], [B2].End(xlDown))'迴圈人員名單
  5. For i = 1 To Application.CountA(Range("N:N"))'迴圈統計業績總點數
  6. If aa = Cells(i, 14) Then'當名子重覆時執行
  7. Cells(i, 15) = Cells(i, 15) + aa.Offset(, 7)'名子欄位往右一格填入For Each取得的點數,並加總
  8. ElseIf Cells(i + 1, 14) = "" Then'當名子不重覆時後一筆資料為空白時執行
  9. Cells(i + 1, 14) = aa.Offset(, 0)'新建立名子
  10. Cells(i + 1, 15) = aa.Offset(, 7)'新建立該員點數
  11. End If'結束如果
  12. Next'下一個For i迴圈
  13. Next'下一個For Each迴圈
  14. End Sub'結束程式
複製代碼

作者: faye59    時間: 2018-10-23 20:16

回復 5# prince0413


    還有程序中只有寫當前Sheet的資料統計,
沒有區分月份,
如果要月份需要再加入A欄位的判讀,
否則你當前Sheet就放入當月份就好。
(當時簡易寫寫而已,沒想太多)

如果需要修改再提出問題,
一次幫你做修正。
作者: GBKEE    時間: 2018-10-24 06:29

本帖最後由 GBKEE 於 2018-10-24 06:32 編輯
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim Sh As Worksheet, Rng As Range
  4.     Application.ScreenUpdating = False
  5.     Set Sh = Sheets("10月")                              '**指定工作表
  6.     Set Rng = Sh.Range("B1", Sh.Range("B1").End(xlDown)) '**B欄的範圍: B1到最後一筆的資料
  7.     With Sh.Range("N1")
  8.         .CurrentRegion.Clear                             '**清除 延伸範圍
  9.         Rng.AdvancedFilter xlFilterCopy, , .Cells, xlYes '**進階篩選 將業務人員編號 複製到 N1
  10.                                                          '** xlYes 參數 -- 不選重覆資料
  11.         With .CurrentRegion.Columns(2)                   '**延伸範圍的第二欄
  12.             .Cells = "=" & "SUMIF(" & Rng.Address(, , xlR1C1) & ",RC[-1]," & Rng.Offset(, 7).Address(, , xlR1C1) & ")"
  13.             '** hcm19522 的公式 =IF(COUNTIF(B$2:B2,B2)=1,SUMIF(B:B,B2,I:I),"")
  14.             '**取 SUMIF(B:B,B2,I:I)  帶入公式
  15.             '**Rng.Address(, , xlR1C1)             ** B:B 的 R1C1 樣式的參照
  16.             '**Rng.Offset(, 7).Address(, , xlR1C1) ** I:I 的 R1C1 樣式的參照
  17.             '**RC[-1]                           ** B2  的 R1C1 樣式的參照
  18.             .Value = .Value                       '** 將公式轉成值
  19.         End With
  20.         .Range("B1") = "點數加總"                 '**補上標頭
  21.     End With
  22. End Sub
複製代碼

作者: 准提部林    時間: 2018-10-24 14:52

本帖最後由 准提部林 於 2018-10-24 17:42 編輯

Sub TEST()
Dim Arr, xD, i&, T$, U&, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([B1], [I65536].End(xlUp))
Arr(1, 2) = "點數加總"
For i = 2 To UBound(Arr)
    T = Arr(i, 1): U = xD(T): Arr(i, 2) = ""
    If U = 0 Then N = N + 1: U = N: xD(T) = N
    Arr(U + 1, 1) = Arr(i, 1)
    Arr(U + 1, 2) = Val(Arr(U + 1, 2)) + Val(Arr(i, 8))
Next i
[M:N].ClearContents
With [M1:N1].Resize(N + 1): .Value = Arr: .Borders.LineStyle = 1: End With
End Sub
作者: prince0413    時間: 2018-11-30 14:48

回復 7# faye59


    非常感謝大大您的教導
作者: prince0413    時間: 2018-11-30 14:48

回復 8# GBKEE


    謝謝大大指導
作者: prince0413    時間: 2018-11-30 14:49

回復 9# 准提部林


    謝謝大大指導  我試試看~




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