Board logo

標題: [發問] 資料轉移 [打印本頁]

作者: ounmaxz    時間: 2010-6-10 16:09     標題: 資料轉移

本帖最後由 ounmaxz 於 2010-6-10 16:14 編輯

請各位大大幫忙一下將加班統計表內的資料
經輸入日期後將資料轉移到加班統計表內
有填入加班時間及加班事由才移轉
煩請各位大大幫忙  [attach]1198[/attach]
作者: ounmaxz    時間: 2010-6-11 13:46

Sub nn()
Dim Rng As Range, A As Range, Cell As Range
With Sheet2
Set Rng = .Range(.[N5], .[N7].End(xlUp)) '設置比對的標準區域
End With
With Sheet1
For Each A In .Range(.[A1], .[A65536].End(xlUp)) '在sheet1的d欄資料循環
    If Not Rng.Find(A, lookat:=xlWhole) Is Nothing Then '如果標準區找到d欄的值
       If Cell Is Nothing Then Set Cell = A Else Set Cell = Union(Cell, A) '如果變數Cell是不是物件就將d欄設給Cell否則Cell就會將原來範圍增加一儲存格A
    End If
Next
End With
Sheet3.Cells = "" '清空Sheet3內容
Cell.EntireRow.Copy Sheet3.[A2] '把Sheet1符合的列複製到Sheet3的A1
   
End Sub
以上程式碼是小弟從舊論壇翻出來進行小修改後的
小弟希望改幾個小地方但是無奈對VBA不熟悉
無從修改煩請大大協助一下
上面的第一項篩選條件是日期
但是小弟還需要有N欄有加班的才篩選出來
第二是此程式碼會將格是及公式帶過來小弟希望只帶值就好
Sheet3.Cells = "" '清空Sheet3內容是否能改成只清空適當區域
加班申請表內[A5,H20]
煩請各位大大幫幫忙
[attach]1218[/attach]
作者: Hsieh    時間: 2010-6-12 11:16

回復 2# ounmaxz


    看不出單位如何對應先以"單位"代表
  1. Sub nn()
  2. Dim Rng As Range, A As Range, Ar(), Ay()
  3. With Sheet2
  4. Set Rng = .Range(.[N5], .[N7].End(xlUp)) '設置比對的標準區域
  5. With Sheet1
  6. ReDim Preserve Ay(0)
  7. Ay(0) = .[A1].Resize(, 14).Value
  8. For Each A In .Range(.[A1], .[A65536].End(xlUp)) '在sheet1的d欄資料循環
  9.     If Not Rng.Find(A, lookat:=xlWhole) Is Nothing And A.Offset(, 13) = "加班" Then '如果標準區找到d欄的值
  10.        ReDim Preserve Ar(s)
  11.        ReDim Preserve Ay(s + 1)
  12.        Ar(s) = Array("單位", A.Value, A.Offset(, 1).Value, "", A.Offset(, 2).Value, Format(A.Offset(, 3).Value, "hh:mm"), Format(A.Offset(, 4).Value, "hh:mm"), A.Offset(, 5).Value)
  13.        Ay(s + 1) = A.Resize(, 14).Value
  14.        s = s + 1
  15.     End If
  16. Next
  17. End With
  18. .[A5:I20] = ""
  19. Sheet3.Cells = "" '清空Sheet3內容
  20. If s > 0 Then .[A5].Resize(s, 8) = Application.Transpose(Application.Transpose(Ar)): _
  21. Sheet3.[A1].Resize(s + 1, 14) = Application.Transpose(Application.Transpose(Ay)) '把Sheet1符合的列複製到Sheet3的A1
  22. End With
  23. End Sub
複製代碼

作者: ounmaxz    時間: 2010-6-13 16:15

回復 3# Hsieh


   感謝Hsieh大大的幫忙有兩個問題要在麻煩大大幫忙
1.Ar(s) = Array("單位", A.Value, A.Offset(, 1).Value, "", A.Offset(, 2).Value, Format(A.Offset(, 3).Value, "hh:mm"), Format(A.Offset(, 4).Value, "hh:mm"), A.Offset(, 5).Value)
       Ay(s + 1) = A.Resize(, 14).Value
       s = s + 1
紅色的部分能不能改成由附件Sheet2內的值來取代
第2的部分在附件SHEET1裡有說明比較清楚

再次麻煩大大
[attach]1258[/attach]
作者: Hsieh    時間: 2010-6-14 14:28

回復 4# ounmaxz
  1. Sub nn()
  2. Dim Rng As Range, A As Range, Ar(), Ay()
  3. With Sheet2
  4. Ut = .[P5].Value
  5. Set Rng = .Range(.[N5], .[N65536].End(xlUp)) '設置比對的標準區域
  6. With Sheet1
  7. ReDim Preserve Ay(0)
  8. Ay(0) = .[A1].Resize(, 14).Value
  9. For Each A In .Range(.[A1], .[A65536].End(xlUp)) '在sheet1的d欄資料循環
  10.     If Not Rng.Find(A, lookat:=xlWhole) Is Nothing And A.Offset(, 13) = "加班" Then '如果標準區找到d欄的值
  11.        ReDim Preserve Ar(s)
  12.        ReDim Preserve Ay(s + 1)
  13.        Ar(s) = Array(Ut, A.Value, A.Offset(, 1).Value, "", A.Offset(, 2).Value, Format(A.Offset(, 3).Value, "hh:mm"), Format(A.Offset(, 4).Value, "hh:mm"), A.Offset(, 5).Value)
  14.        Ay(s + 1) = A.Resize(, 14).Value
  15.        s = s + 1
  16.     End If
  17. Next
  18. End With
  19. .[A5:I20] = ""
  20. Sheet3.Cells = "" '清空Sheet3內容
  21. If s > 0 Then .[A5].Resize(s, 8) = Application.Transpose(Application.Transpose(Ar)): _
  22. Sheet3.[A1].Resize(s + 1, 14) = Application.Transpose(Application.Transpose(Ay)) '把Sheet1符合的列複製到Sheet3的A1
  23. End With
  24. End Sub

  25. Sub yy() '填滿日期
  26. y = InputBox("輸入西元年度", , 2010)
  27. With Sheet1
  28. Ar = .[B2:C17].Value
  29. r = 2
  30. For i = DateValue(y & "/1/1") To DateValue(y & "/12/31")
  31.   .Cells(r, 1).Resize(16, 1) = i
  32.   .Cells(r, 2).Resize(16, 2) = Ar
  33.   r = r + 16
  34. Next
  35. End With
  36. End Sub
複製代碼

作者: ounmaxz    時間: 2010-6-14 16:55

感謝Hsieh 的熱情幫助讓小弟受益良多






歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)