返回列表 上一主題 發帖

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

回復 10# samwang
大神

如果A欄數值有N個呢?
而且最多排5個欄位而已

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

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

TOP

回復 13# wang077


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

TOP

回復 14# samwang
就是不管A欄有幾筆資料
最多只能用5個欄位來排序
也就是B-F欄

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

回復 16# samwang
測試過了,沒問題。
感謝大神幫忙,辛苦了。

TOP

回復 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有關
大神可以幫我嗎

TOP

回復 18# wang077

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

TOP

回復 19# samwang
好的,感謝您

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題