Board logo

標題: [發問] 一列只能有五個數值 [打印本頁]

作者: wang077    時間: 2021-6-21 16:48     標題: 一列只能有五個數值

本帖最後由 wang077 於 2021-6-21 16:51 編輯

各位大神請問
[attach]33436[/attach]
我如何用VBA懹原本直的1~15
每五個數值排一行
作者: samwang    時間: 2021-6-22 08:32

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

回復 1# wang077

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

每五個數值排一行: 亂數,可重複...
作者: samwang    時間: 2021-6-22 11:17

回復 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
作者: hcm19522    時間: 2021-6-22 16:09

https://blog.xuite.net/hcm19522/twblog/589846795
作者: wang077    時間: 2021-6-22 19:14

回復 2# samwang
打錯了 應該是3個數值一行,然後限制最多5行,數值不一定是1∼15,上面圖片只是示意圖
作者: wang077    時間: 2021-6-22 19:17

回復 4# hcm19522
有辦法使用vba來做嗎
作者: samwang    時間: 2021-6-22 19:45

回復 5# wang077


不好意思,真的不能理解您的需求,或者您可以附上有解答的檔案且說明詳細條件規則,感謝。
作者: wang077    時間: 2021-6-22 23:28

回復 3# samwang
For i = 1 To UBound(Arr)
這段顯示資料型態錯誤
作者: wang077    時間: 2021-6-22 23:35

回復 6# wang077
[attach]33442[/attach]
就是例如圖片
我A欄中的數值
要把它分成五行來排列
排列方式A1:A3的數值在B1:B3
A4:A6的數值在C1:C3
以此類推。
作者: samwang    時間: 2021-6-23 07:17

回復 9# wang077


3樓程式碼沒問題如附件,請再測試看看,謝謝。
作者: wang077    時間: 2021-6-23 15:34

回復 10# samwang
大神
[attach]33448[/attach]
如果A欄數值有N個呢?
而且最多排5個欄位而已
作者: samwang    時間: 2021-6-23 16:47

回復 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
作者: wang077    時間: 2021-6-23 16:54

回復 12# samwang
大神,可能我表達不清楚
我的意思是A1:A4的數值在B1:B4
A5:A8的數值在C1:C4
A9:A12的數值在D1:D4
A13:A16的數值在E1:E4
A17:A20的數值在F1:F4
作者: samwang    時間: 2021-6-23 17:24

回復 13# wang077


因為您的規則不明確有問題,現在需求A欄位只到20筆
如果A欄位假設超過20筆以後,要怎麼處理??
作者: wang077    時間: 2021-6-23 18:28

回復 14# samwang
就是不管A欄有幾筆資料
最多只能用5個欄位來排序
也就是B-F欄
作者: samwang    時間: 2021-6-23 20:29

回復 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
作者: wang077    時間: 2021-6-23 20:57

回復 16# samwang
測試過了,沒問題。
感謝大神幫忙,辛苦了。
作者: wang077    時間: 2021-6-25 09:31

回復 16# samwang
Sub Openfile()
fileToOpen = Application _
        .GetOpenFilename("Excel Files(*.csv*), *.csv*", MultiSelect:=True)
        num = 0
        linenumber = 0
    For num1 = 1 To UBound(fileToOpen)
    num = num + 1
    If fileToOpen(num) <> "False" Then
    Open fileToOpen(num) For Input As #1 ' Open file for input
    Do While Not EOF(1) ' Loop until end of file
        linenumber = linenumber + 1
        Line Input #1, line
        arrayOfElements = Split(line, ",")
        elementnumber = 0
        For Each element In arrayOfElements
            elementnumber = elementnumber + 1
            Cells(linenumber, elementnumber).Value = element
        Next
    Loop
    End If
Close #1 ' Close file.
Next num1
End Sub
這是我的程式碼,開出來的csv檔都是亂碼
用了錄影巨集
發現跟TextFilePlatform有關
大神可以幫我嗎
作者: samwang    時間: 2021-6-25 09:44

回復 18# wang077

不好意思,不太熟悉CSV檔案這部分,建議可以到Excel 程式區發文,那�堸暋D比較多人在關注或許可解您的問題,感謝。
作者: wang077    時間: 2021-6-25 09:54

回復 19# samwang
好的,感謝您
作者: samwang    時間: 2021-7-19 14:39

回復 18# wang077

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




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