Nhờ các bạn viết rút gọn code copy

Liên hệ QC

hiénlinh197

Thành viên tiêu biểu
Tham gia
26/5/09
Bài viết
491
Được thích
113
Nhờ các bạn viết rút gọn code copy trình bày như file đính kèm.
Cảm ơn các bạn!
 

File đính kèm

  • chuyên-đề-VBA.xlsb
    215.7 KB · Đọc: 21
Thử cách này xem bạn. Đổi tên sheet TH thành TH1 cho đồng bộ dữ liệu nhé!
PHP:
Sub Copy3()
Dim i, j
For i = 1 To 6
    For j = 1 To 6
'cau lenh nay ban can viet lai nhe, toi chi dua ra giai phap goi ten sheet cho ban thoi
        Worksheets(i + j - 1).Range().copy Worksheets("TH" & i).Range()
    Next
Next
End Sub
 
Thử cách này xem bạn. Đổi tên sheet TH thành TH1 cho đồng bộ dữ liệu nhé!
PHP:
Sub Copy3()
Dim i, j
For i = 1 To 6
    For j = 1 To 6
'cau lenh nay ban can viet lai nhe, toi chi dua ra giai phap goi ten sheet cho ban thoi
        Worksheets(i + j - 1).Range().copy Worksheets("TH" & i).Range()
    Next
Next
End Sub
Cảm ơn bạn vu_tuan_manh_linh, bạn có thể viết luôn cho mình được không? Mình mù tịt lắm không thể viết tiếp được bạn à.
 
Nhờ các bạn viết rút gọn code copy trình bày như file đính kèm.
Cảm ơn các bạn!
Bạn thử code này xem đúng ý không.
Mã:
Sub Test()
Dim i As Long
For i = 1 To 5
    MyCopy i
Next
End Sub
Mã:
Private Sub MyCopy(ByVal ToShIndex As Long)
Dim ToSh As Worksheet, i  As Long
Set ToSh = Sheets("TH" & IIf(ToShIndex = 1, "", ToShIndex))
For i = 1 To 6
    With Sheets(CStr((ToShIndex - 1) * 6 + i))
        .Range("A63:M163").Copy ToSh.Cells(2, (i - 1) * 43 + 2)
        .Range("A333:M433").Copy ToSh.Cells(2, (i - 1) * 43 + 16)
        .Range("A603:M703").Copy ToSh.Cells(2, (i - 1) * 43 + 30)
    End With
Next
End Sub
 
Cảm ơn bạn vu_tuan_manh_linh, bạn có thể viết luôn cho mình được không? Mình mù tịt lắm không thể viết tiếp được bạn à.
1 kiểu viết khác, không có bẫy lỗi. (Không có 1 "miếng" dữ liệu để kiểm tra)
Sheet("TH") sửa lại tên thành "TH1"
PHP:
Public Sub S_Gpe()
Dim I As Long, J As Long, Col As Long, fSh As Long, eSh As Long, ShName As String
For I = 1 To 5
    With Sheets("TH" & I)
        Col = 2: fSh = I * 6 - 5: eSh = I * 6
        For J = fSh To eSh
            ShName = CStr(J)
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A63:M163").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A333:M433").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A603:M703").Value
                Col = Col + 14
        Next J
    End With
Next I
End Sub
 
Bạn thử code này xem đúng ý không.
Mã:
Sub Test()
Dim i As Long
For i = 1 To 5
    MyCopy i
Next
End Sub
Mã:
Private Sub MyCopy(ByVal ToShIndex As Long)
Dim ToSh As Worksheet, i  As Long
Set ToSh = Sheets("TH" & IIf(ToShIndex = 1, "", ToShIndex))
For i = 1 To 6
    With Sheets(CStr((ToShIndex - 1) * 6 + i))
        .Range("A63:M163").Copy ToSh.Cells(2, (i - 1) * 43 + 2)
        .Range("A333:M433").Copy ToSh.Cells(2, (i - 1) * 43 + 16)
        .Range("A603:M703").Copy ToSh.Cells(2, (i - 1) * 43 + 30)
    End With
Next
End Sub
Cảm ơn bạn huuthang_bd! thật là quá tuyệt vời, chỉ trong vòng tíc tắc quá hay bạn à.
 
1 kiểu viết khác, không có bẫy lỗi. (Không có 1 "miếng" dữ liệu để kiểm tra)
Sheet("TH") sửa lại tên thành "TH1"
PHP:
Public Sub S_Gpe()
Dim I As Long, J As Long, Col As Long, fSh As Long, eSh As Long, ShName As String
For I = 1 To 5
    With Sheets("TH" & I)
        Col = 2: fSh = I * 6 - 5: eSh = I * 6
        For J = fSh To eSh
            ShName = CStr(J)
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A63:M163").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A333:M433").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A603:M703").Value
                Col = Col + 14
        Next J
    End With
Next I
End Sub
Hình như lần cuối cùng phải + 15 mới đúng đó anh.
Mã:
Col = Col + 15
 
1 kiểu viết khác, không có bẫy lỗi. (Không có 1 "miếng" dữ liệu để kiểm tra)
Sheet("TH") sửa lại tên thành "TH1"
PHP:
Public Sub S_Gpe()
Dim I As Long, J As Long, Col As Long, fSh As Long, eSh As Long, ShName As String
For I = 1 To 5
    With Sheets("TH" & I)
        Col = 2: fSh = I * 6 - 5: eSh = I * 6
        For J = fSh To eSh
            ShName = CStr(J)
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A63:M163").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A333:M433").Value
                Col = Col + 14
            .Cells(2, Col).Resize(101, 13).Value = Sheets(ShName).Range("A603:M703").Value
                Col = Col + 14
        Next J
    End With
Next I
End Sub
Cảm ơn bạn Ba Tê! quá hay đúng ý của mình, thật bất ngờ 2 cách viết của 2 bạn Ba Tê và huuthang_bd khác nhau nhưng rất chuẩn. Bây giờ không biết mình nên sử dụng code nào đây?
 
Web KT
Back
Top Bottom