返回列表 上一主題 發帖

[發問] 資料轉置求助前輩

[發問] 資料轉置求助前輩

資料轉置求助前輩,如何直式轉橫式分上下半年,懇請先進幫忙,感恩.

直式轉橫式2.rar (9.53 KB)

杜小平

回復 1# dou10801

排班表如何套入表格2_v1.zip (23.51 KB)

test

TOP

回復 1# dou10801

請測試看看,謝謝。

Sub test()
Dim Arr, Brr(), i&, s%, k%, n%, x%
Arr = Range([a3], [c65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 16)
For i = 1 To UBound(Arr)
    s = s + 1: k = k + 1
    For j = 1 To 3
        n = n + 1: Brr(n, k) = Arr(i, j)
    Next j
    If s = 16 Then
        x = x + 1: R = R + s
        n = R / 16 * 3 + x
        k = 0: s = 0
    Else
        If n < 4 Then n = 0 Else n = n - 3
    End If
Next
Range("h12").Resize((x + 1) * 4, 16) = Brr
End Sub

TOP

回復 2# singo1232001


大大您好,如果資料來源在多加幾列,結果顯示會不一樣,請再測試看看,謝謝。

TOP

有出狀況的範例嗎

TOP

回復 5# singo1232001


如附件請您測試看看,謝謝。

排班表如何套入表格2_v1.zip (23.77 KB)

TOP

Sub 轉置()
Dim Arr, Brr, C%(2), r%, i&, j%
ActiveSheet.UsedRange.Offset(, 7).EntireColumn.Delete
Arr = Range([a3], [c65536].End(3))
ReDim Brr(1 To 8, 1 To 200)
For i = 2 To UBound(Arr)
    r = IIf(Arr(i, 1) > 6, 1, 0):  C(r) = C(r) + 1
    For j = 1 To 3
        Brr(r * 4 + j, C(r)) = Arr(i, j)
    Next j
    If C(r) > C(2) Then C(2) = C(r)
Next i
With [h2].Resize(UBound(Brr), C(2))
     .Value = Brr
     .Borders.LineStyle = 1
     .ColumnWidth = 4
     .Font.Size = 14
End With
End Sub

Xl0000541.rar (13.97 KB)


================================

TOP

隨意窩 "EXCEL迷"  blog  或https://blog.xuite.net/hcm19522/twblog
已收集8500篇 EXCEL函數

TOP

回復 6# samwang

排班表如何套入表格2_v2.zip (25.31 KB)

TOP

回復 9# singo1232001


# 3 樓回答,應該就是您的需求,請再測試看看,謝謝。
Sub test()
Dim Arr, Brr(), i&, s%, k%, n%, x%
Arr = Range([a3], [c65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 16)
For i = 1 To UBound(Arr)
     s = s + 1: k = k + 1
     For j = 1 To 3
         n = n + 1: Brr(n, k) = Arr(i, j)
     Next j
     If s = 16 Then
         x = x + 1: R = R + s
         n = R / 16 * 3 + x
         k = 0: s = 0
     Else
         If n < 4 Then n = 0 Else n = n - 3
     End If
Next
Range("h2").Resize((x + 1) * 4, 16) = Brr
End Sub

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題