- 帖子
- 559
- 主題
- 58
- 精華
- 0
- 積分
- 626
- 點名
- 0
- 作業系統
- win8
- 軟體版本
- office2013
- 閱讀權限
- 50
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2010-11-22
- 最後登錄
- 2024-6-14
|
6#
發表於 2011-4-20 14:25
| 只看該作者
回復 5# imzues
這是小弟~ 自己寫的簡單處理方式
因為不太熟練怎麼把日期值抓出來後還保留是日期的格式~ 所以多利用一些步驟來處理~
小弟也不太會用array(陣列)的方式來寫~ 就用所寫的方式來處理~
黑貓~ 黃貓~ 抓得到老鼠的就是好貓~ 僅供您參考~ 應該很容易了解我在寫些什麼~
1.處理"日期格式" (方便find在找相對應的日期位置)
2.處理時間的位置 (因為是固定的位置,所以用if判斷該筆資料是落在哪一列的位置)
3.尋找正確的位置,帶入值 (依k對應到的位置後,向下(列)移動d-3,帶入值,外加一個if先行判段是不是有值,若有值就累加)
Sub xx()
Do Until Sheet1.Cells(4 + N, 5) = ""
'======處理日期======
Sheet1.Range("A1") = Year(Sheet1.Cells(4 + N, 5)) & "/" & Month(Sheet1.Cells(4 + N, 5)) & "/" & Day(Sheet1.Cells(4 + N, 5))
A = Sheet1.Range("A1") 'A: 處理資料的日期
Sheet1.Range("A1").ClearContents
'======處理日期======
'======處理時間的位置======
b = Hour(Sheet1.Cells(4 + N, 5))
c = Minute(Sheet1.Cells(4 + N, 5))
If b < 3 And c <= 59 Or (b = 4 And c = 0) Then
d = 4
ElseIf b < 7 And c <= 59 Or (b = 8 And c = 0) Then
d = 5
ElseIf b < 11 And c <= 59 Or (b = 12 And c = 0) Then
d = 6
ElseIf b < 15 And c <= 59 Or (b = 16 And c = 0) Then
d = 7
ElseIf b < 19 And c <= 59 Or (b = 20 And c = 0) Then
d = 8
ElseIf b < 23 And c <= 59 Or (b = 24 And c = 0) Then
d = 9
End If
'======處理時間的位置======
Set k = Sheet1.Range("I3:K3").Find(A, LookIn:=xlFormulas)
If k.Offset(d - 3, 0) = "" Then
k.Offset(d - 3, 0) = Sheet1.Cells(4 + N, 5).Offset(0, 1)
Else
k.Offset(d - 3, 0) = k.Offset(d - 3, 0) + Sheet1.Cells(4 + N, 5).Offset(0, 1)
End If
N = N + 1 'N為處理下一筆資料之參數
Loop
End Sub |
|