返回列表 上一主題 發帖

如何每日更新不同日期的檔案,順便計算儲存格數??

如何每日更新不同日期的檔案,順便計算儲存格數??

[版主管理留言]
  • GBKEE(2011/8/27 15:48): 發文勿用,很急, 救命... 等字眼

本帖最後由 zaq370 於 2011-8-28 00:28 編輯

如何每日更新不同日期的檔案,順便計算儲存格數??(如附檔)

我公司有一個每日更新的檔案
範例黨內的  a,b,c,d,e 是狀態  1,2,3,4,5 是去0827或0828檔案的狀態索取出資料並計算每個狀態有多少個??

我問題是,我要在每日更新檔案再開啟時,可以自動更新裡面狀態的數據(或是設一個按鈕更新也可以),譬如說,今日是08/27就抓0827檔名的資料,明天就抓0828檔名的資料。


Desktop.rar (9.37 KB)

回復 1# zaq370
我已困擾很久
可以看看 你嘗試的程式碼嗎?

TOP

回復 1# zaq370
試試看
  1. Private Sub Workbook_Open()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. wb = Format(Date, "mmdd")
  4. With Workbooks.Open(ThisWorkbook.Path & "\" & wb & ".xls")
  5. With .Sheets(1)
  6. For Each a In .Range(.[I2], .[I2].End(xlDown))
  7.   d(a.Value) = d(a.Value) + 1
  8. Next
  9. End With
  10. .Close
  11. End With
  12. With Sheets(1)
  13. For Each a In .Range(.[A2], .[A2].End(xlDown))
  14. a.Offset(, 1) = d(a.Value)
  15. Next
  16. End With
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 3# Hsieh


    感謝大大!!

可以使用!!不好意思,我是新手!

有一句程式碼不太懂"a.Offset(, 1) = d(a.Value)"
這句的意思是指???
VBA的程式碼有點難懂!!>"<

TOP

回復 4# zaq370


    能理解a代表甚麼嗎?
了解a的意義,再去看offset函數的說明
d是一個字典物件變數,請先爬文了解Dictionary物件的用法
學海無涯_不恥下問

TOP

本帖最後由 zaq370 於 2011-8-31 11:06 編輯

回復 5# Hsieh

大哥你好,再拜託一下囉,現在又有一個問題,比如想子在隔壁欄位抓取上個月同一日的資料(若遇周六日與假日則抓取前一日),這個語法要如何使用

譬如說,今天是8/31號,隔壁欄位要抓取7/31日的資料,但7/31是周日,則要抓取7/29的資料

TOP

回復 5# Hsieh


Sub Last_month()
Dim A As Range
Dim TheDate As Date

Set d = CreateObject("Scripting.Dictionary")

TheDate = Date

diff = DatePart("w", TheDate, vbUseSystem)


rr = DateAdd("d", (diff - 35), TheDate)

wb = Format(rr, "mmdd")

tt = Format(rr, "mm")

With Workbooks.Open(ThisWorkbook.Path & "\100" + tt & "\" & "NOC" + wb & ".xls")

   With .Sheets(1)
      For Each A In .Range(.[I2], .[I2].End(xlDown))
         If IsEmpty(d(A.Value)) Then
         d(A.Value) = Array(1, A.Offset(, 7).Value)
         Else
         ar = d(A.Value)
         ar(0) = ar(0) + 1
         ar(1) = ar(1) + A.Offset(, 7).Value
         d(A.Value) = ar
         End If
      Next
   End With
   
   
      
   .Close
End With
With Sheet1
For i = 5 To .[B65536].End(xlUp).Row Step 2
Set A = .Cells(i, 2)
A.Offset(, 4).Resize(2, 1) = Application.Transpose(d(A.Value))
Next
.Range("f19").Formula = "=f5+f7+f9+f11+f13+f15+f17"
.Range("f20").Formula = "=f6+f8+f10+f12+f14+f16+f18"
.Range("f45").Formula = "=f21+f33+f35+f37+f39+f41+f43"
.Range("f46").Formula = "=f22+f34+f36+f38+f40+f42+f44"
.Range("f47").Formula = "=f19+f45+f23+f25+f27+f29+f31"
.Range("f48").Formula = "=f20+f46+f24+f26+f28+f30+f32"

End With
End Sub

----------------------------------------------

大哥:

目前是可以抓取上個月同一日的檔案,若遇假日或六日要往前推前一個工作日,要如何改?例如:7/31是星期日,要抓7/29,或是9/12中秋節,則要抓9/9檔案資料,拜託!!

TOP

回復 7# zaq370

從檔案中無法跟你的敘述配合,請上傳檔案說明
學海無涯_不恥下問

TOP

回復 8# Hsieh


    不好意思!!忘記加檔案!!

Book222.rar (992.16 KB)

TOP

回復 9# zaq370

應是檔名問題吧
myday = DateAdd("m", -1, Date) - (Weekday(DateAdd("m", -1, Date), vbMonday) - 5)
wb = Format(myday, "mmdd")
tt = Format(myday, "mm")
With Workbooks.Open(ThisWorkbook.Path & "\100" & tt & "\" & "NOC" + wb & ".xls")
學海無涯_不恥下問

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題