返回列表 上一主題 發帖

[發問] 一列只能有五個數值

本帖最後由 samwang 於 2021-6-22 08:33 編輯

回復 1# wang077

不好意思對文字理解不太好,看了似懂非懂,請問規則為何? 可否再加說明詳細或附上解答,謝謝。

每五個數值排一行: 亂數,可重複...

TOP

回復 1# wang077

請測試看看,謝謝。

Sub test()
Dim Arr, Ar(1 To 3)
Arr = Range([a1], [a65536].End(3))
y = 2
For i = 1 To UBound(Arr)
    For j = 1 To 3
        N = N + 1: If N > UBound(Arr) Then GoTo 99
        Ar(j) = Arr(N, 1)
    Next
    Cells(1, y).Resize(3, 1) = Application.Transpose(Ar)
    y = y + 1
99: Next
End Sub

TOP

回復 5# wang077


不好意思,真的不能理解您的需求,或者您可以附上有解答的檔案且說明詳細條件規則,感謝。

TOP

回復 9# wang077


3樓程式碼沒問題如附件,請再測試看看,謝謝。

活頁簿1.zip (14.1 KB)

TOP

回復 11# wang077

請再測試看看,謝謝

Sub test1()
Dim Arr, Ar(1 To 3)
Arr = Range([a1], [a65536].End(3))
x = 1: y = 2
For i = 1 To UBound(Arr)
    For j = 1 To 3
        N = N + 1: If N > UBound(Arr) Then GoTo 99
        Ar(j) = Arr(N, 1)
    Next
    Cells(x, y).Resize(3, 1) = Application.Transpose(Ar)
    If y < 6 Then y = y + 1 Else x = x + 3: y = 2
99: Next
End Sub

TOP

回復 13# wang077


因為您的規則不明確有問題,現在需求A欄位只到20筆
如果A欄位假設超過20筆以後,要怎麼處理??

TOP

回復 15# wang077

請再測試看看,謝謝

Sub test2()
Dim Arr, Ar(), N%, M%, x%, y%
Arr = Range([a1], [a65536].End(3))
M = Int(UBound(Arr) / 5): x = 1: y = 2
If M < 1 Then
    Cells(x, y).Resize(, UBound(Arr)) = Application.Transpose(Arr)
Else
    For i = 1 To UBound(Arr)
        ReDim Ar(1 To M)
        If N = UBound(Arr) Then GoTo 99
        If N = M * 5 Then
            ReDim Ar(1 To UBound(Arr) - N)
            For j = 1 To UBound(Arr) - N: N = N + 1: Ar(j) = Arr(N, 1): Next
            Cells(x, y).Resize(, UBound(Ar)) = Ar: Exit For
        End If
        For j = 1 To M: N = N + 1: Ar(j) = Arr(N, 1): Next
        Cells(x, y).Resize(UBound(Ar), 1) = Application.Transpose(Ar)
        Erase Ar
        If y < 6 Then y = y + 1 Else x = x + M: y = 2
99: Next
End If
End Sub

TOP

回復 18# wang077

不好意思,不太熟悉CSV檔案這部分,建議可以到Excel 程式區發文,那�堸暋D比較多人在關注或許可解您的問題,感謝。

TOP

回復 18# wang077

可以附上檔案,我幫忙看看是否有解,謝謝

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題