Sửa CODE "Muốn chuyển 6 hàng, thành 6 cột" trong đoạn Code sau (1 người xem)

Liên hệ QC

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

thichthibup

Thành viên chính thức
Tham gia
17/7/13
Bài viết
62
Được thích
6
Mã:
Public Sub Chuyen()    
Dim Vung As Range, VungChuyen As Range, I As Long, J As Long, K As Long, Mg As Variant    
Set Vung = Sheets("Nguon").Range(Sheets("Nguon").[A1], Sheets("Nguon").[A50000].End(xlUp))    
ReDim Mg(1 To Sheets("Nguon").Range("A1").CurrentRegion.Cells.Count, 1 To 2)        
For I = 1 To Vung.Rows.Count            
Set VungChuyen = Range(Vung(I), Vung(I).End(xlToRight))                
For J = 2 To VungChuyen.Columns.Count                    
K = K + 1                    
Mg(K, 1) = Vung(I): Mg(K, 2) = VungChuyen(J)                
Next J        
Next I    [E2:F50000].ClearContents    [E2].Resize(K, 2) = Mg
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Thichthibup sửa đoạn code này xem thế nào nhé, code này hình như của bác BATE hay bác CÒ thì phải, hiiii, mạn phép các bác cho bé còi đạo lại code của các bác nhé, hiiii :
PHP:
Public Sub Chuyen()
    Dim Vung As Range, VungChuyen As Range, I As Long, J As Long, K As Long, Mg As Variant
    Set Vung = Sheets("Nguon").Range(Sheets("Nguon").[A1], Sheets("Nguon").[A50000].End(xlUp))
    ReDim Mg(1 To Sheets("Nguon").Range("A1").CurrentRegion.Cells.Count, 1 To 5)
        For I = 1 To Vung.Rows.Count
            Set VungChuyen = Range(Vung(I), Vung(I).End(xlToRight))
            K = 0
                For J = 1 To VungChuyen.Columns.Count
                    K = K + 1
                    Mg(K, I) = VungChuyen(J)
                Next J
        Next I
    [AE2:AH50000].ClearContents
    [AE2].Resize(K, 5) = Mg
End Sub
 

File đính kèm

Upvote 0
Thichthibup sửa đoạn code này xem thế nào nhé, code này hình như của bác BATE hay bác CÒ thì phải, hiiii, mạn phép các bác cho bé còi đạo lại code của các bác nhé, hiiii :
PHP:
Public Sub Chuyen()
    Dim Vung As Range, VungChuyen As Range, I As Long, J As Long, K As Long, Mg As Variant
    Set Vung = Sheets("Nguon").Range(Sheets("Nguon").[A1], Sheets("Nguon").[A50000].End(xlUp))
    ReDim Mg(1 To Sheets("Nguon").Range("A1").CurrentRegion.Cells.Count, 1 To 5)
        For I = 1 To Vung.Rows.Count
            Set VungChuyen = Range(Vung(I), Vung(I).End(xlToRight))
            K = 0
                For J = 1 To VungChuyen.Columns.Count
                    K = K + 1
                    Mg(K, I) = VungChuyen(J)
                Next J
        Next I
    [AE2:AH50000].ClearContents
    [AE2].Resize(K, 5) = Mg
End Sub
Cảm ơn chị bé còi........hihi có phải chị ko nữa, trúng thuốc rồi cảm ơn hoamattroicoi
 
Upvote 0
Thichthibup sửa đoạn code này xem thế nào nhé, code này hình như của bác BATE hay bác CÒ thì phải, hiiii, mạn phép các bác cho bé còi đạo lại code của các bác nhé, hiiii :
PHP:
Public Sub Chuyen()
    Dim Vung As Range, VungChuyen As Range, I As Long, J As Long, K As Long, Mg As Variant
    Set Vung = Sheets("Nguon").Range(Sheets("Nguon").[A1], Sheets("Nguon").[A50000].End(xlUp))
    ReDim Mg(1 To Sheets("Nguon").Range("A1").CurrentRegion.Cells.Count, 1 To 5)
        For I = 1 To Vung.Rows.Count
            Set VungChuyen = Range(Vung(I), Vung(I).End(xlToRight))
            K = 0
                For J = 1 To VungChuyen.Columns.Count
                    K = K + 1
                    Mg(K, I) = VungChuyen(J)
                Next J
        Next I
    [AE2:AH50000].ClearContents
    [AE2].Resize(K, 5) = Mg
End Sub
Cũng có sao đâu, của ai trên GPE thì mình nói chung là "trên GPE" được rồi (hổng phải của mình...Ẹc..).
Nhìn tên biến chắc là của bác Cò, nhưng chắc cũng hồi năm "lâu lắm", nếu bi giờ chắc bác Cò sẽ "xuất độc chiêu" khác "gồi".
Như code bài trên có thể "túm" nó 1 chút cho dễ đọc (theo tui thôi nghe):
PHP:
Public Sub GPE1()
Dim sArr(), dArr(), I As Long, J As Long
sArr = [A1].CurrentRegion.Value
ReDim dArr(1 To UBound(sArr, 2), 1 To UBound(sArr, 1))
For I = 1 To UBound(sArr, 1)
    For J = 1 To UBound(sArr, 2)
        dArr(J, I) = sArr(I, J)
    Next J
Next I
[V1].Resize(J - 1, I - 1).Value = dArr
End Sub
Hoặc chơi luôn công cụ Transpose của Excel:
PHP:
Public Sub GPE2()
Range("A1").CurrentRegion.Copy
Range("AB1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub
 
Upvote 0
Cũng có sao đâu, của ai trên GPE thì mình nói chung là "trên GPE" được rồi (hổng phải của mình...Ẹc..).
Nhìn tên biến chắc là của bác Cò, nhưng chắc cũng hồi năm "lâu lắm", nếu bi giờ chắc bác Cò sẽ "xuất độc chiêu" khác "gồi".
Như code bài trên có thể "túm" nó 1 chút cho dễ đọc (theo tui thôi nghe):
PHP:
Public Sub GPE1()
Dim sArr(), dArr(), I As Long, J As Long
sArr = [A1].CurrentRegion.Value
ReDim dArr(1 To UBound(sArr, 2), 1 To UBound(sArr, 1))
For I = 1 To UBound(sArr, 1)
    For J = 1 To UBound(sArr, 2)
        dArr(J, I) = sArr(I, J)
    Next J
Next I
[V1].Resize(J - 1, I - 1).Value = dArr
End Sub
Hoặc chơi luôn công cụ Transpose của Excel:
PHP:
Public Sub GPE2()
Range("A1").CurrentRegion.Copy
Range("AB1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub
Chào Bác Batê, trong ba code trên bác có cách nào cho code tự chạy luôn khi có dữ liệu mới không ah. Cảm ơn Bác rất nhiều
 
Upvote 0
Chào Bác Batê, trong ba code trên bác có cách nào cho code tự chạy luôn khi có dữ liệu mới không ah. Cảm ơn Bác rất nhiều
Mấy cái vụ "code tự chạy khi có dữ liệu mới" thì bạn nên đưa code trên vào một trong các sự kiện sau: Worksheet_Change, Worksheet_Activate, Worksheet_Deactivate,... nói chung là tùy mục đích muốn code thực hiện khi nào mà chọn sự kiện phù hợp.
 
Upvote 0
Chào Bác Batê, trong ba code trên bác có cách nào cho code tự chạy luôn khi có dữ liệu mới không ah. Cảm ơn Bác rất nhiều
Dữ liệu mới là do bạn copy vào hay nhập tay vào hay là như thế nào??? Tôi muốn hỏi để lựa chọn sự kiện phù hợp cho bạn ý mà!!!
 
Upvote 0

File đính kèm

Upvote 0
Vậy xem thử file này nhé! Tôi lấy code bài #4 cho ngắn, copy và paste dữ liệu mới vào vùng A1:T5
Cảm ơn bạn đã giúp tôi đạt được hai mục đích là copy và past, nhưng trong khi sd nảy sinh đó là khi xóa một vài ô thì nó ko cập nhật. Rất mong nhận được sự giúp đỡ của bạn lần nữa.

 
Upvote 0
Cảm ơn bạn đã giúp tôi đạt được hai mục đích là copy và past, nhưng trong khi sd nảy sinh đó là khi xóa một vài ô thì nó ko cập nhật. Rất mong nhận được sự giúp đỡ của bạn lần nữa.
Mượn tạm code chú Bate lần nữa, à mà tôi chưa thấy bạn cám ơn bài chú BATE đâu nhá, tôi dùng lại bài chú ấy giúp bạn còn phải cám ơn đây này, huống chi nó giúp cải thiện công việc của bạn???
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mượn tạm code chú Bate lần nữa, à mà tôi chưa thấy bạn cám ơn bài chú BATE đâu nhá, tôi dùng lại bài chú ấy giúp bạn còn phải cám ơn đây này, huống chi nó giúp cải thiện công việc của bạn???
Vâng ah! Cảm ơn bạn thật ngại quá khi phải để bạn nhắc, Thực ra tôi luôn biết chân thành cảm ơn khi được giúp đỡ mà, cung ko hiểu sao bạn lại nhắc nhở nữa bạn nên nói cụ thẻ #?. Nếu có thiếu sót với Bác Batê tôi sẽ chân thành sửa lỗi.
--------
!Cũng nhiều khi tải file về test trước, cảm ơn sau, nhưng khi vui mùng quá lại chậm trễ việc cảm ơn, rất mong các bạn thông cảm.
Hình như bạn gửi lại nhầm các file đầu tiên của Bác Ba tê thì phải
 
Lần chỉnh sửa cuối:
Upvote 0
!Cũng nhiều khi tải file về test trước, cảm ơn sau, nhưng khi vui mùng quá lại chậm trễ việc cảm ơn, rất mong các bạn thông cảm.
Hình như bạn gửi lại nhầm các file đầu tiên của Bác Ba tê thì phải
OK, nhắc bạn vậy thôi chắc tại thói quen của tôi ấy mà, thực ra nói cám ơn người khác khi người ta giúp mình cũng là 1 cử chỉ đẹp nếu không muốn nói là rất có lợi cho mình và tôi đang mún cái lợi đó cho bạn mà.

Hehe, sorry bạn đúng là gửi nhầm file thật, bạn tải lại file ở bài #11 nhé rùi cho ý kiến để ta có tiếp tục sửa nữa hay không?
 
Upvote 0

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

Back
Top Bottom