Board logo

標題: [發問] 輸入資料與報表的問題 [打印本頁]

作者: q1a2z5    時間: 2021-4-16 10:22     標題: 輸入資料與報表的問題

請問:
在輸入表黃色區塊內輸入資料,會在101,102,103.......工作表中呈現出來,公式要如何設定呢?
由於報表(工作表)有20多個,無法很快的完成資料鍵入。
謝謝!
作者: samwang    時間: 2021-4-16 13:45

回復 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
作者: q1a2z5    時間: 2021-4-16 14:23

回復 2# samwang

感謝你的解答,但我不知如何執行?
謝謝!
作者: samwang    時間: 2021-4-16 15:02

回復 3# q1a2z5

上傳檔案,請執行看看,謝謝。
作者: q1a2z5    時間: 2021-4-16 15:26

回復 4# samwang

不好意思,我沒有將問題問的很清楚,我的問題是在輸入表黃色區塊內依序輸入資料(數值),會立即在各報表101,102,103工作表(紅色區塊內)顯示出來,
因為在工作表作一次性的輸入全部資料會比較方便。

謝謝!
作者: q1a2z5    時間: 2021-4-16 16:37

回復 5# q1a2z5

忘了上傳附件,已補上,謝謝!
作者: samwang    時間: 2021-4-16 17:14

回復 5# q1a2z5

不好意思,自己粗心大意,沒看清您的需求,我再來想看看,謝謝。
作者: samwang    時間: 2021-4-17 08:11

回復 6# q1a2z5


如附件請測試看看,謝謝
作者: q1a2z5    時間: 2021-4-28 08:44

回復 8# samwang

謝謝大大的解答,但日後在工作上有可能會碰到類似的問題,
請教如何學習一些簡單基本的公式或程式,例如:在工作表1的B3(或B欄)儲存格輸入資料,在工作表2的C5或其他的儲存格顯示。

謝謝!
作者: samwang    時間: 2021-4-28 10:02

回復 9# q1a2z5

不好意思,真的不知道您的需求,或者您方便上傳檔案,我再來研究一下,謝謝
作者: samwang    時間: 2021-4-28 10:25

回復 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
作者: ML089    時間: 2021-4-29 13:38

回復 6# q1a2z5


先選擇 B5:G5
輸入公式 =TRANSPOSE(OFFSET(輸入表!$A$1,MATCH(MAX(--(0&MID(A2:A4,4,3))),輸入表!A:A,)-1+(B4="7月")*6,MATCH(--RIGHT(CELL("filename"),3),輸入表!$2:$2,)-1,6))
以陣列公式輸入 (CTRL+SHIFT 先按不放,再按ENTER)三鍵輸入公式

先選擇 B5:G5 複製
先選擇 B7:G7 貼上
先選擇 B9:G9 貼上
先選擇 B11:G11 貼上


複製 Sheet "101" 至 Sheet "102"
複製 Sheet "101" 至 Sheet "103"




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