Board logo

標題: 如何分別計算出12', 13' , 14', 15'年的下單總數量 [打印本頁]

作者: fangsc    時間: 2015-3-17 23:38     標題: 如何分別計算出12', 13' , 14', 15'年的下單總數量

請教程式寫法:

依料號搜尋, 尋找出 "data" 工作表中
1. 分別計算出12', 13' , 14', 15'年的下單總數量
2.  找出這個料號的第一次下單日期
3.  找出這個料號的第一次下單的客戶名稱
[attach]20451[/attach]

感謝.
作者: GBKEE    時間: 2015-3-18 11:17

回復 1# fangsc
是試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim AR, Rng(1 To 3) As Range, i As Integer, C As Integer, Sp As String
  4.     With Sheets("工作表1").UsedRange.Columns("B:H")
  5.         AR = .Value
  6.         .Offset(1, 1) = ""       '
  7.         For i = 2 To .Rows.Count ' UBound(AR) 也可以
  8.             With Sheets("Data")
  9.                 .AutoFilterMode = False    '取消自動篩選
  10.                 C = 0
  11.                 Set Rng(1) = Sheets("工作表1").[C1]  '年度
  12.                 Do While UBound(Split(Rng(1).Offset(, C), "'")) > 0
  13.                     .[a1].AutoFilter Field:=3, Criteria1:=AR(i, 1)  '自動篩選:料號準則
  14.                     If .[D1].End(xlDown).Row <> .Rows.Count Then
  15.                         Sp = Split(Rng(1).Offset(, C), "'")(0)
  16.                         '自動篩選:年度準則
  17.                         .[a1].AutoFilter Field:=5, Criteria1:=">=20" & Sp & "/1/1", Operator:=xlAnd, Criteria2:="<=20" & Sp & "/12/31"
  18.                         If .[D1].End(xlDown).Row <> Rows.Count Then '有資料
  19.                             '加總:?年度下單數量
  20.                             AR(i, 2 + C) = Application.Sum(.Columns("D:D").SpecialCells(xlCellTypeVisible))
  21.                             Set Rng(2) = .UsedRange.SpecialCells(xlCellTypeVisible)
  22.                             If Rng(2).Areas(1).Rows.Count > 1 Then
  23.                                 Set Rng(3) = Rng(2).Areas(1).Range("B1")
  24.                             Else
  25.                                 Set Rng(3) = Rng(2).Areas(2).Range("B1")
  26.                             End If
  27.                             If AR(i, 6) = "" Then AR(i, 6) = Rng(3).Offset(, 3)  '第一次下單日期
  28.                             If AR(i, 7) = "" Then AR(i, 7) = Rng(3)              '第一次下單客戶
  29.                         End If
  30.                     End If
  31.                     C = C + 1
  32.                     Set Rng(1) = Rng(1).Offset(, C)
  33.                     .AutoFilterMode = False
  34.                 Loop
  35.             End With
  36.         Next
  37.         .Value = AR
  38.     End With
  39. End Sub
複製代碼

作者: fangsc    時間: 2015-3-18 18:06

回復 2# GBKEE
Dear 版主,
謝謝你. 待我好好研究理解一下, 有什麼問題再請教您.




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