返回列表 上一主題 發帖

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

回復 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

回復 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

回復 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

回復 10# olisun   
07# 程式碼中
Set Rng = .[j15:l26]  改成 Set Rng = .[Q15:Q26]
刪掉 11.                AD = AD - Evaluate("SUMIF(" & 工作表17.[A:A].Address(, , , 1) & ",""<" & d - (W - 1) & """, " & 工作表17.Columns(1 + (i * 12) + ii).Address(, , , 1) & ")")
就可以

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題