Tách từ bảng tổng hợp ra bảng chi tiết

Liên hệ QC

Đình Phán

Thành viên thường trực
Tham gia
23/11/10
Bài viết
232
Được thích
68
Giới tính
Nam
Nghề nghiệp
kt
Chào các ACE GPE

Em có 01 bài toán này mà nghĩ mãi chưa có lời giải, em đã dùng vòng lặp For Next của 2 biến i và j để lặp từng cột nhưng vẫn không ra.
Nhờ các ACE giúp đỡ.

Em cảm ơn!
 

File đính kèm

  • Tach tu bang tong hop ra Chi tiet.xlsx
    9.1 KB · Đọc: 15
Chào các ACE GPE

Em có 01 bài toán này mà nghĩ mãi chưa có lời giải, em đã dùng vòng lặp For Next của 2 biến i và j để lặp từng cột nhưng vẫn không ra.
Nhờ các ACE giúp đỡ.

Em cảm ơn!
Đại khái là thế này, bạn tùy chỉnh theo ý bạn
PHP:
Public Sub Tach()
    Dim Hang, Cot, kK, I, J, K
    Set Hang = [B2:F2]
    Set Cot = [A3:A5]
    ReDim kK(1 To Hang.Columns.Count * Cot.Rows.Count, 1 To 3)
        For I = 1 To Hang.Columns.Count
            For J = 1 To Cot.Rows.Count
                K = K + 1
                kK(K, 1) = Hang(I): kK(K, 2) = Cot(J): kK(K, 3) = Hang(I).Offset(J)
            Next J
        Next I
     [M3].Resize(K, 3) = kK
End Sub
 
Upvote 0
Đại khái là thế này, bạn tùy chỉnh theo ý bạn
PHP:
Public Sub Tach()
    Dim Hang, Cot, kK, I, J, K
    Set Hang = [B2:F2]
    Set Cot = [A3:A5]
    ReDim kK(1 To Hang.Columns.Count * Cot.Rows.Count, 1 To 3)
        For I = 1 To Hang.Columns.Count
            For J = 1 To Cot.Rows.Count
                K = K + 1
                kK(K, 1) = Hang(I): kK(K, 2) = Cot(J): kK(K, 3) = Hang(I).Offset(J)
            Next J
        Next I
     [M3].Resize(K, 3) = kK
End Sub

Cảm ơn anh Concogia,

Giờ em muốn các cột kết quả trả về cách nhau thì làm thế nào ạ?
 
Upvote 0
Cảm ơn anh Concogia,

Giờ em muốn các cột kết quả trả về cách nhau thì làm thế nào ạ?
Cách nhau là cách mấy cột? Bạn hỏi thì phải có bảng kết quả mẫu người khác mới hiểu được chứ.
Code này là từ bảng dữ liệu A2->F5, kết quả xuất ra 5 cột ( I2 --> M16, cách nhau 1 cột). Bạn tự điều chỉnh theo ý bạn.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long
sArr = Range("A2:F5").Value
ReDim dArr(1 To UBound(sArr) * UBound(sArr, 2), 1 To 5)
For J = 2 To UBound(sArr, 2)
    For I = 2 To UBound(sArr)
        K = K + 1
        dArr(K, 1) = sArr(1, J)
        dArr(K, 3) = sArr(I, 1)
        dArr(K, 5) = sArr(I, J)
    Next I
Next J
Range("I2").Resize(K, 5) = dArr
End Sub
 
Upvote 0
Cách nhau là cách mấy cột? Bạn hỏi thì phải có bảng kết quả mẫu người khác mới hiểu được chứ.
Code này là từ bảng dữ liệu A2->F5, kết quả xuất ra 5 cột ( I2 --> M16, cách nhau 1 cột). Bạn tự điều chỉnh theo ý bạn.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long
sArr = Range("A2:F5").Value
ReDim dArr(1 To UBound(sArr) * UBound(sArr, 2), 1 To 5)
For J = 2 To UBound(sArr, 2)
    For I = 2 To UBound(sArr)
        K = K + 1
        dArr(K, 1) = sArr(1, J)
        dArr(K, 3) = sArr(I, 1)
        dArr(K, 5) = sArr(I, J)
    Next I
Next J
Range("I2").Resize(K, 5) = dArr
End Sub
Cảm ơn anh Ba Tê,

Cách của anh hay mà dễ hiểu với người mới như em ạ. Chỗ cách nhau bao nhiêu cột thì em tùy chỉnh được, tuy nhiên chỗ sArr em muốn để động thì thế nào ạ?
Phần này của anh đang để cố định bằng Range("A2:F5"), trong khi phần này của em thì đang lấy dữ liệu động từ 1 bảng mà em Pivot Table.
Tiện đây cho em hỏi, với Dữ liệu nguồn mà số cột thay đổi, làm sao để Pivot Table tự động thêm cột ạ?
Như file ở trên thì hiện đang có 7 cột, giả sửa phát sinh thêm cột số 8 thì làm thế nào để bắt vào Pivot ạ?
 

File đính kèm

  • Pivot Table.xlsb
    10.1 KB · Đọc: 6
Upvote 0
Web KT
Back
Top Bottom