返回列表 上一主題 發帖

判斷日期之後的資料並計算數量

判斷日期之後的資料並計算數量

請問如何使用VBA,判斷日期之後的資料並計算數量,謝謝!
活頁簿1.tar (148.5 KB)

依照所KEY IN的日期(工作表2-E欄)  判斷日期 之後的資料(工作表1 -G欄) 並計算區域(工作表1 -G欄)的數量


可以使用COUNTIFS 函數可將準則套用至跨多個範圍的儲存格,並計算所有準則均符合的個數。
=COUNTIFS(日期範圍,">"&判斷基準的日期,號碼1範圍,判斷基準的號碼1,區域範圍,判斷基準的區域)
日期NA的部分
=if(判斷基準的日期="NA",去掉日期準則的COUNTIFS,含日期準則的COUNTIFS)

TOP

計算結果與你提供的不同, 但應該是你要的
  1. Option Explicit
  2. Sub Cal_N()
  3.     Dim I%, J%, DD$, S1 As Worksheet, S2 As Worksheet
  4.    
  5.     Set S1 = ActiveWorkbook.Sheets("工作表1")
  6.     Set S2 = ActiveWorkbook.Sheets("工作表2")
  7.    
  8.     For I = 3 To 7
  9.         For J = 6 To 16
  10.             DD = S2.Cells(I, 5)
  11.             If DD = "NA" Then
  12.                 S2.Cells(I, J) = Application.WorksheetFunction.CountIfs(S1.Columns(5), _
  13.                 S2.Cells(I, 3), S1.Columns(7), S2.Cells(2, J))
  14.             Else
  15.                 S2.Cells(I, J) = Application.WorksheetFunction.CountIfs(S1.Columns(5), _
  16.                 S2.Cells(I, 3), S1.Columns(7), S2.Cells(2, J), S1.Columns(6), ">" & S2.Cells(I, 5))
  17.             End If
  18.         Next J
  19.     Next I
  20. End Sub
複製代碼

TOP

回復 3# prin.huang


    請問prin.huang
假如有一兩萬列的資料,使用countifs來跑,時跑的時間過久,請問程式怎麼修才可以改善速度

TOP

參考站內or谷歌資料,改寫成陣列試試
應該會快很多

TOP

參考站內or谷歌資料,改寫成陣列試試
應該會快很多
prin.huang 發表於 2017-6-1 09:19


剛才試作了一下,excel函數sumifs無法接受陣列,只能接受range,試運算1萬多筆速度還是慢,
看來只能把"資料讀成陣列+自己寫判斷句"才能加快速度了

TOP

回復 6# prin.huang

prin.huang

謝謝,我再試試看

TOP

回復 4# chiang0320
改用陣列並模擬2萬5千筆,大約1.3秒完成,請測試。
活頁簿1.rar (138.42 KB)

TOP

回復 8# Kubi

複本 複本 活頁簿1.tar (147 KB)

請問Kubi

如果變更原始檔案的關鍵欄位,程式碼又會修改成怎麼樣子?

可以讓我對照一下之前與之後,謝謝幫忙!

TOP

回復 9# chiang0320
請參考
活頁簿2.rar (131.26 KB)

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題