[Nhờ giúp đỡ] - insert thêm dòng từ data các cột

Liên hệ QC

minhtri.jasonn

Thành viên mới
Tham gia
26/8/20
Bài viết
3
Được thích
0
Chào các bác!

Hiện tại em đang gặp tý xíu vấn đề về việc chuyển cột thành dòng. Em muốn chuyển data doanh thu từng sản phẩm theo thời gian đang được biểu diễn theo cột sang data doanh thu từng sản phẩm theo thời gian được biểu diễn theo hàng - các bác xem file đính kèm giúp em nha - để sử dụng pivot table ạ.

Em còn gà nên nhờ các cao nhân chỉ giáo giúp em cách làm như thế nào cho nhanh nhất vì data của em có khoảng 8000 mã sản phẩm. Copy từng cái thì tới tết con cua mất =)))

Cảm ơn các bác nhiều!
 

File đính kèm

  • Data.xlsm
    13 KB · Đọc: 9
Bạn thử dùng pivotable coi có giải quyết được nhu cầu của mình không
 

File đính kèm

  • Data.xlsm
    21.5 KB · Đọc: 3
Upvote 0
mình thử rồi nhưng mà khi mình chuyển sang slicer thì nhìn nó hơi ngố và không có thể hiện được data từng tháng trong năm.
 

File đính kèm

  • Data (3).xlsm
    24.7 KB · Đọc: 3
Upvote 0
Chào các bác!

Hiện tại em đang gặp tý xíu vấn đề về việc chuyển cột thành dòng. Em muốn chuyển data doanh thu từng sản phẩm theo thời gian đang được biểu diễn theo cột sang data doanh thu từng sản phẩm theo thời gian được biểu diễn theo hàng - các bác xem file đính kèm giúp em nha - để sử dụng pivot table ạ.

Em còn gà nên nhờ các cao nhân chỉ giáo giúp em cách làm như thế nào cho nhanh nhất vì data của em có khoảng 8000 mã sản phẩm. Copy từng cái thì tới tết con cua mất =)))

Cảm ơn các bác nhiều!
Thầy @huuthang_bd ơi, em học thầy làm bằng array file này nha thầy...
Thử file này nha bạn @minhtri.jasonn
 

File đính kèm

  • Data.xlsm
    54.3 KB · Đọc: 8
Upvote 0
Góp vui 1 cách khác
Mã:
Option Explicit
Sub ABC()
Dim Arr1(), KQ(), i&, Arr2(), j&, a&, Arr3(), iRow&, iCol&
iCol = Sheet4.Range("XFD1").End(xlToLeft).Column
iRow = Sheet4.Range("A" & Rows.Count).End(xlUp).Row
Arr1 = Sheet4.Range("A2:E" & iRow).Value
Arr2 = Sheet4.Range("F1").Resize(, iCol - 5).Value
Arr3 = Sheet4.Range("F2").Resize(iRow - 1, iCol - 5).Value
ReDim KQ(1 To UBound(Arr1) * iCol, 1 To 7)
For i = 1 To UBound(Arr1)
    If Arr1(i, 1) <> "" Then
        For j = 1 To UBound(Arr2, 2)
            a = a + 1
            KQ(a, 1) = Arr1(i, 1)
            KQ(a, 2) = Arr1(i, 2)
            KQ(a, 3) = Arr1(i, 3)
            KQ(a, 4) = Arr1(i, 4)
            KQ(a, 5) = Arr1(i, 5)
            KQ(a, 6) = Arr2(1, j)
            KQ(a, 7) = Arr3(i, j)
        Next j
    End If
Next i
Sheets("KQ").Range("F:F").NumberFormat = "@"
Sheets("KQ").Range("A2").Resize(500000, 7).ClearContents
If a Then Sheets("KQ").Range("A2").Resize(a, 7).Value = KQ
MsgBox "OK"
End Sub
 

File đính kèm

  • Data.xlsm
    23.6 KB · Đọc: 5
Upvote 0
Góp vui nữa:
PHP:
Sub abc()
Dim sArr(), dArr(), I&, J&, K&, L&, sLr As Long
Sheets("Result").Range("A2:G10000").ClearContents
With Sheets("Source")
    sLr = .Range("A" & Rows.Count).End(3).Row
    sArr = .Range("A1:H" & sLr).Value
End With
ReDim dArr(1 To 3 * sLr, 1 To 7)
K = 1
For I = 2 To UBound(sArr())
    L = 5
    For K = K To K + 2
        L = L + 1
        For J = 1 To UBound(sArr(), 2) - 3
            dArr(K, J) = sArr(I, J)
            dArr(K, 6) = sArr(1, L)
            dArr(K, 7) = sArr(I, L)
        Next
    Next
Next
Sheets("Result").Range("A2").Resize(K, 7) = dArr
End Sub
 

File đính kèm

  • Data.xlsm
    22 KB · Đọc: 5
Upvote 0
Upvote 0
Mặc dù mặc định đối số thứ hai của hàm UBound() bằng 1 nhưng nên viết rõ luôn để lâu lâu đọc lại vẫn hiểu.
Dạ em cám ơn anh đã chỉ ạ. Có 1 điều em thắc mắc. Ngày trước khi em có viết tường minh ra Ubound(Arr1,1). Nó làm máy em treo. Không biết đó có phải nguyên nhân không. Nhưng từ đó em mặc định là UBound(Arr1). Không biết thế nó có ảnh hưởng gì không anh nhỉ
Bạn thêm một biến ghi nhận giá trị UBound(Arr2, 2) để không phải gọi lại hàm đó UBound(Arr1) lần.
Tức là chẳng hạn em cho s= UBound() ấy anh hả? Hihi. Em ghi nhận. Nhiều khi em thấy các anh chị, thầy cô trên này cũng hay viết vậy.
Em xin cám ơn ạ
 
Upvote 0
Upvote 0
Bạn gửi lại bài đó qua đây xem nào.
Hihi. Cám ơn anh. Lâu lâu rồi nên em không biết nó nằm chỗ nào nữa. Nhưng đúng vì cái suy nghĩ đó nên em mới có thói quen bỏ luôn đối số 1 sau UBound ấy ạ.
Em sẽ lưu ý cái anh chỉ. Sẽ sửa thói quen ấy, chắc là do em suy nghĩ sai.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom