返回列表 上一主題 發帖

[發問] 輸入資料與報表的問題

回復 1# q1a2z5

請測試看看,謝謝。

Sub tt()
Dim Arr, Brr(1 To 13, 1 To 1), T, T2, i%, j%, Y%, N%, N1%
Y = 3
For sh = 2 To Sheets.Count
    With Sheets(sh).Range("A4:G12")
        Arr = .Value
        For i = 1 To 4
            For j = 2 To UBound(Arr, 2)
                If InStr(Arr(i, j), "月") = False Then GoTo 98
                T = Mid(Arr(i, j), 1, Len(Arr(i, j)) - 1): T2 = Arr(i + 1, j)
                If T2 <> "" Then N = N + 1: Brr(T + 1, 1) = T2
98:         Next j
        Next i
        If N > 0 Then
            Brr(1, 1) = Sheets(sh).Name
            Sheets("輸入表").Cells(2, Y).Resize(13, 1) = Brr
            Erase Brr
        End If      
        For i = 5 To 8
            For j = 2 To UBound(Arr, 2)
                If InStr(Arr(i, j), "月") = False Then GoTo 99
                T = Mid(Arr(i, j), 1, Len(Arr(i, j)) - 1): T2 = Arr(i + 1, j)
                If T2 <> "" Then N1 = N1 + 1: Brr(T + 1, 1) = T2
99:         Next j
        Next i
        If N1 > 0 Then
            Brr(1, 1) = Sheets(sh).Name
            Sheets("輸入表").Cells(16, Y).Resize(13, 1) = Brr
            Erase Brr
        End If
        If N > 0 Or N1 > 0 Then N = 0: N1 = 0: Y = Y + 1
    End With
Next
End Sub

TOP

回復 3# q1a2z5

上傳檔案,請執行看看,謝謝。

數值.zip (26.31 KB)

TOP

回復 5# q1a2z5

不好意思,自己粗心大意,沒看清您的需求,我再來想看看,謝謝。

TOP

回復 6# q1a2z5


如附件請測試看看,謝謝

數值0417.zip (26.24 KB)

TOP

回復 9# q1a2z5

不好意思,真的不知道您的需求,或者您方便上傳檔案,我再來研究一下,謝謝

TOP

回復 9# q1a2z5

我已加上註解,或許您可以從裡面學到一些自己想要的,然後自己修改練習應用,
我也在學習中,論壇有很多厲害前輩,可以多看看觀摩他們的寫法和思考邏輯,
自己多多練習就會有所成長,互相勉勵之,感謝。

Sub tt()
Dim Arr, Ar(1 To 1, 1 To 6), Ar2(1 To 1, 1 To 6), Ar3(1 To 1, 1 To 6)
Dim Ar4(1 To 1, 1 To 6), T$, j&, i&, N%
Application.ScreenUpdating = False
Tm = Timer
Arr = Sheets("輸入表").Range("a1:bb" & [輸入表!B65536].End(3).Row) '資料裝入數組
For j = 3 To UBound(Arr, 2) '從第3欄開始到最後
    T = Arr(2, j) '年度
    If T = "" Then GoTo 99 '如果年度空白就換下個
    For i = 3 To 8: N = N + 1: Ar(1, N) = Arr(i, j): Next: N = 0     '109年1-6月資料裝入Ar數組
    For i = 9 To 14: N = N + 1: Ar2(1, N) = Arr(i, j): Next: N = 0   '109年7-12月資料裝入Ar2數組
    For i = 17 To 22: N = N + 1: Ar3(1, N) = Arr(i, j): Next: N = 0  '110年1-6月資料裝入Ar3數組
    For i = 23 To 28: N = N + 1: Ar4(1, N) = Arr(i, j): Next: N = 0  '110年7-12月資料裝入Ar4數組
    With Sheets(T)  '每個年度sheet
        .Range("B5").Resize(1, 6) = Ar      'Ar資料貼至B5
        .Range("B7").Resize(1, 6) = Ar2     'Ar2資料貼至B7
        .Range("B9").Resize(1, 6) = Ar3     'Ar3資料貼至B9
        .Range("B11").Resize(1, 6) = Ar4    'Ar4資料貼至B11
    End With
99: Next
Application.ScreenUpdating = True
MsgBox "執行完成" & Timer - Tm & " 秒"
End Sub

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題