返回列表 上一主題 發帖

[發問] Q15:Q26為E2所輸入日期以前的總和(已解決)

查詢統計以周為單位,真的有難度

輸入日期(不一定是當日的日期),本日所查詢的即是所輸入的日期,我想要的是如何本週的統計
輸入查詢日期為8/20,則本周的統計為
8/16(一)~8/20(五)該週的累計
如果輸入查詢其為8/10,則本周的統計為
8/9(一)~8/10(二)該週的累計

日表8-25.rar (113.2 KB)

TOP

回復 1# olisun

你可以善用 Weekday() 函數(套用方式請找Excel VBA的說明)找到所輸入日期的星期數,
再以該星期數往前推算出該週週一的日期,
這樣你想要的資料就不難找到了喔.

TOP

回復  olisun

你可以善用 Weekday() 函數(套用方式請找Excel VBA的說明)找到所輸入日期的星期數,
再以 ...
luhpro 發表於 2010-8-27 22:56



    可以再明確一點嗎

TOP

Dim wkd%, wk1
  
  '所輸入日期的星期數
  wkd = Weekday(Range("E2"), vbMonday)
  '該週星期一的日期
  wk1 = DateAdd("d", -(wkd - 1), Range("E2"))

這樣有了你要的 "星期一" 的日期 與 所輸入的日期.

TOP

回復 3# olisun
  1. Sub Ex()
  2.     Dim d As Date, W%
  3.     d = "2010/8/20"
  4.     W = Weekday(d, vbMonday)  '週一為第1天
  5.     MsgBox "本週第1天 " & d - (W - 1) & "   **   本週第5天  " & d + (5 - W)
  6. End Sub
複製代碼

TOP

本帖最後由 olisun 於 2010-8-28 12:16 編輯

若e2輸入的日期是2010/8/20

j15=sheets(派夾報宣傳車)中,b7+b8+b9+b10+b11=5份

TOP

回復 6# olisun
試試看
  1. Private Sub Ex()
  2.     Dim d As Date, W%, AD, Rng As Range, i%, ii%
  3.     d = 工作表1.[E2]
  4.     W = Weekday(d, vbMonday)  '週一為第1天
  5.     With 工作表1
  6.         .[j13] = "本週  " & d - (W - 1) & "  **   " & d + (5 - W)
  7.         Set Rng = .[j15:l26]
  8.         For i = 0 To Rng.Columns.Count - 1
  9.             For ii = 1 To Rng.Rows.Count
  10.                 AD = Evaluate("SUMIF(" & 工作表17.[A:A].Address(, , , 1) & ",""<=" & d + (5 - W) & """, " & 工作表17.Columns(1 + (i * 12) + ii).Address(, , , 1) & ")")
  11.                 AD = AD - Evaluate("SUMIF(" & 工作表17.[A:A].Address(, , , 1) & ",""<" & d - (W - 1) & """, " & 工作表17.Columns(1 + (i * 12) + ii).Address(, , , 1) & ")")
  12.                 Rng.Cells(ii, i + 1) = AD
  13.             Next
  14.         Next
  15.         Set Rng = .[M15:O15]
  16.         For i = 1 To Rng.Columns.Count
  17.             AD = Evaluate("SUMIF(" & 工作表18.[A:A].Address(, , , 1) & ",""<=" & d + (5 - W) & """, " & 工作表18.Columns(1 + i).Address(, , , 1) & ")")
  18.             AD = AD - Evaluate("SUMIF(" & 工作表18.[A:A].Address(, , , 1) & ",""<" & d - (W - 1) & """, " & 工作表18.Columns(1 + i).Address(, , , 1) & ")")
  19.             Rng.Cells(1, i) = AD
  20.         Next
  21.     End With
  22. End Sub
複製代碼

TOP

回復  olisun
試試看
GBKEE 發表於 2010-8-28 11:50



    如果以2010/8/20測試是ok的,但是如果以2010/8/15測試,答案是錯的?

TOP

回復 8# olisun
輸入查詢日期為8/20,則本周的統計為    8/16(一)~8/20(五) 該週的累計
如果輸入查詢其為8/10,則本周的統計為  8/9(一)~8/10(二)  該週的累計

你不是要一整週的日期間隔  而是要當週第一天到指定日期的天數  將程式碼紅色部分刪掉就可以
10.                AD = Evaluate("SUMIF(" & 工作表17.[A:A].Address(, , , 1) & ",""<=" & d + (5 - W) & """, " & 工作表17.Columns(1 + (i * 12) + ii).Address(, , , 1) & ")")

11.                AD = AD - Evaluate("SUMIF(" & 工作表17.[A:A].Address(, , , 1) & ",""<" & d - (W - 1) & """, " & 工作表17.Columns(1 + (i * 12) + ii).Address(, , , 1) & ")")

TOP

[發問] Q15:Q26為E2所輸入日期以前的總和(已解決)

本帖最後由 olisun 於 2010-8-31 00:25 編輯

Q1526為E2所輸入日期以前的總和
該怎麼設呢?

日表8-28.rar (111.46 KB)

        靜思自在 : 修行要繫緣修心,藉事練心,隨處養心。
返回列表 上一主題