Xin giúp đỡ chuyển đổi bảng số liệu (2 người xem)

  • Thread starter Thread starter dmg
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

dmg

Thành viên mới
Tham gia
3/6/09
Bài viết
22
Được thích
1
Dear mọi người,
Em có cái bảng số liệu ban đầu dạng như file đính kèm, phải chuyển đổi lại thành các cột ngày tháng, cột tên item, và cột con số giá trị tương ứng của item trong ngày đó. Trong ví dụ em có 3 ngày, 3 tên thôi.
Thực tế giả dụ em có x ngày và y tên, làm cho tổ hợp của chúng khi ghép lại vượt quá số lượng hàng excel cho phép, em cần phải save ra file text để lưu được.
Bác cao thủ nào cho em 1 cái macro để làm việc này với được không.
 

File đính kèm

Dear mọi người,
Em có cái bảng số liệu ban đầu dạng như file đính kèm, phải chuyển đổi lại thành các cột ngày tháng, cột tên item, và cột con số giá trị tương ứng của item trong ngày đó. Trong ví dụ em có 3 ngày, 3 tên thôi.
Thực tế giả dụ em có x ngày và y tên, làm cho tổ hợp của chúng khi ghép lại vượt quá số lượng hàng excel cho phép, em cần phải save ra file text để lưu được.
Bác cao thủ nào cho em 1 cái macro để làm việc này với được không.
Mình dùng cách này xem thế nào nhé!!
 
Cách này cũng được bác. Nhưng có được macro thì nuột quá.
Thôi em đành ngồi thủ công chia 2 lần làm vậy. Số lượng thực tế của em nó hơi lớn nên vượt quá 1 triệu dòng, phải cưa đôi 2 lần vậy :D
Thanks bác đã góp ý tưởng :)
 
Cách này cũng được bác. Nhưng có được macro thì nuột quá.
Thôi em đành ngồi thủ công chia 2 lần làm vậy. Số lượng thực tế của em nó hơi lớn nên vượt quá 1 triệu dòng, phải cưa đôi 2 lần vậy :D
Thanks bác đã góp ý tưởng :)
Muốn thì có hà. Thay số 4 nếu có nhiều hơn 4 cột. Thay K2 cho nơi ra kết quả
PHP:
Sub chuyen()
Dim Sarr(), Darr()
Dim I As Long, J As Long, X As Long, Cot As Long, Y As Long
Cot = 4
Sarr = Range([A1], [A65536].End(3)).Resize(, Cot).Value
ReDim Darr(1 To UBound(Sarr) * (Cot - 1), 1 To Cot - 1)
For X = 2 To Cot
    For I = 2 To UBound(Sarr)
        J = J + 1
        Darr(J, 1) = Sarr(1, X)
        Darr(J, 2) = Sarr(I, 1)
        For Y = 3 To Cot - 1
            Darr(J, Y) = Sarr(I, X)
        Next
    Next
Next
[K2].Resize(J, 3) = Darr
End Sub
 
Thanks bác nhiều nhiều ;)
 
Ơ nhưng mà bác cho em hỏi tại sao không thay đoạn code
For Y = 3 To Cot - 1
Darr
(J, Y) = Sarr(I, X)
Next

Bằng
Darr(J, 3) = Sarr(I, X) luôn nhỉ, vì chỉ có 3 cột: Date - Name - Value thôi mà :)
 
Ơ nhưng mà bác cho em hỏi tại sao không thay đoạn code
For Y = 3 To Cot - 1
Darr
(J, Y) = Sarr(I, X)
Next

Bằng
Darr(J, 3) = Sarr(I, X) luôn nhỉ, vì chỉ có 3 cột: Date - Name - Value thôi mà :)
Thì phải thử mới biết tại sao mình viết như thế chứ. Thử thay như thế coi nó ra cái gì. Từ đó mình nghiệm ra nhiều thứ hơn
Có thể mình code sai bét rồi cũng nên.

À há, nhìn kỹ lại thì chẳng hiểu sao mình viết quái thiệt. Đúng ra là vầy là đủ
PHP:
Sub chuyen()
Dim Sarr(), Darr()
Dim I As Long, J As Long, X As Long, Cot As Long, Y As Long
Cot = 4
Sarr = Range([A1], [A65536].End(3)).Resize(, Cot).Value
ReDim Darr(1 To UBound(Sarr) * (Cot - 1), 1 To 3)
For X = 2 To Cot
    For I = 2 To UBound(Sarr)
        J = J + 1
        Darr(J, 1) = Sarr(1, X)
        Darr(J, 2) = Sarr(I, 1)
        Darr(J, 3) = Sarr(I, X)
    Next
Next
[K2].Resize(J, 3) = Darr
End Sub
 
Lần chỉnh sửa cuối:
Cuối cùng em dùng 2 vòng for các bác ạ :D
Thanks các bác đã tận tình giúp đỡ :">
 
Web KT

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

Back
Top Bottom