Xin code để thực hiện copy danh sách từ 5 Sheet về Sheet khối (1 người xem)

Liên hệ QC

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

Tran Mui

Thành viên thường trực
Tham gia
29/12/07
Bài viết
237
Được thích
56
Tôi đang cần code để copy danh sách từ 5 Sheet các lớp về Sheet khối 10; trong file còn nhiều Sheet khác nữa không cần copy; các danh sách lớp không đều nhau
Rất mong được mọi người giúp đỡ
Xin cán ơn
File vidu_copy đính kèm
 

File đính kèm

Tôi đang cần code để copy danh sách từ 5 Sheet các lớp về Sheet khối 10; trong file còn nhiều Sheet khác nữa không cần copy; các danh sách lớp không đều nhau
Rất mong được mọi người giúp đỡ
Xin cán ơn
File vidu_copy đính kèm
Dùng thử code sau nhé.
PHP:
Option Explicit
Dim endR As Long, newR As Long
Dim Arr()
Dim Sh As Worksheet, shName As String
Sub CopySh()
With Application
  .ScreenUpdating = False
  .DisplayAlerts = False
End With
Sheets("Khoi_10").Select
newR = 2
For Each Sh In Worksheets
  shName = Sh.Name
  If Left(shName, 1) = "A" Then
    With Sheets(shName)
      endR = .Cells(1000, 2).End(xlUp).Row
      Arr = .Range("A2:C" & endR).Value
    End With
  Range("A" & newR).Resize(endR - 1, 3) = Arr
  newR = newR + endR - 1
  End If
Next Sh
Erase Arr: Set Sh = Nothing
With Application
  .ScreenUpdating = True
  .DisplayAlerts = True
End With
End Sub
Hay dùng code sau, dữ liệu ít nên cũng không biết cái nào nhanh hay chậm.
PHP:
Option Explicit
Dim endR As Long, newR As Long, i As Long
Dim Arr(1 To 5)
Dim Sh As Worksheet, shName As String
Sub CopyArr()
With Application
  .ScreenUpdating = False
  .DisplayAlerts = False
End With
Sheets("Khoi_10").Select
newR = 2: i = 0
For Each Sh In Worksheets
  shName = Sh.Name
  If Left(shName, 1) = "A" Then
    i = i + 1
    With Sheets(shName)
      endR = .Cells(1000, 2).End(xlUp).Row
      Arr(i) = .Range("A2:C" & endR)
    End With
  End If
Next Sh
For i = 1 To UBound(Arr)
  Range("A" & newR).Resize(UBound(Arr(i)), 3) = Arr(i)
  newR = newR + UBound(Arr(i))
Next i
Erase Arr: Set Sh = Nothing
With Application
  .ScreenUpdating = True
  .DisplayAlerts = True
End With
End Sub
 
Lần chỉnh sửa cuối:
Tôi đang cần code để copy danh sách từ 5 Sheet các lớp về Sheet khối 10; trong file còn nhiều Sheet khác nữa không cần copy; các danh sách lớp không đều nhau
Rất mong được mọi người giúp đỡ
Xin cán ơn
File vidu_copy đính kèm
Một cách giải, bạn chép code này vào nút nhé
Mã:
Private Sub CommandButton1_Click()
Dim I As Integer, Ws As Worksheet
        For I = 1 To 5
            Set Ws = Sheets("A" & I)
            Ws.Range(Ws.[b2], Ws.[b500].End(xlUp)).Resize(, 2).Copy [b5000].End(xlUp)(2)
        Next
    Range([b2], [b5000].End(xlUp)).Offset(0, -1) = [row(A:A)]
End Sub
Thân
 
Tôi đang cần code để copy danh sách từ 5 Sheet các lớp về Sheet khối 10; trong file còn nhiều Sheet khác nữa không cần copy; các danh sách lớp không đều nhau
Rất mong được mọi người giúp đỡ
Xin cán ơn
File vidu_copy đính kèm
thử xài tạm cái này xem không biết như thế nào code của GPE sau khi được tôi chế biến

Private Sub CommandButton2_Click()
Dim Vung As Range, I As Integer, T As Long, R As Long
Sheets("KHOI_10").Range("A2:K10000").Clear
For I = 1 To 5
T = 1 + (80 * (I - 1))
Set Vung = Sheets("A" & I).Range("A2:C82")
Vung.Copy Sheets("KHOI_10").Range("A" & T + 4)
Next

With Sheets("KHOI_10").Range("A3:A" & T + 80).Resize(, 3)
.Sort Sheets("KHOI_10").[C2], 1
ActiveSheet.Range("A3").FormulaR1C1 = "1"
ActiveSheet.Range("A4").FormulaR1C1 = "2"
ActiveSheet.Range("A3:A4").AutoFill Destination:=Range("A3:A" & T + 80)
End With
With Sheets("KHOI_10")
R = .[B10000].End(xlUp).Row + 1
.Range(Sheets("KHOI_10").Rows(R), Sheets("KHOI_10").Rows(10000)).Delete Shift:=xlUp
Sheets("A1").Range("A1:C1").Copy Sheets("KHOI_10").Range("A2")

End With

End Sub
 
Lần chỉnh sửa cuối:
thử xài tạm cái này xem không biết như thế nào code của GPE sau khi được tôi chế biến
Private Sub CommandButton2_Click()
Dim Vung As Range, I As Integer, T As Long, R As Long
Sheets("KHOI_10").Range("A2:K10000").Clear
For I = 1 To 5
T = 1 + (80 * (I - 1))
Set Vung = Sheets("A" & I).Range("A2:C82")
Vung.Copy Sheets("KHOI_10").Range("A" & T + 4)
Next

With Sheets("KHOI_10").Range("A3:A" & T + 80).Resize(, 3)
.Sort Sheets("KHOI_10").[C2], 1
ActiveSheet.Range("A3").FormulaR1C1 = "1"
ActiveSheet.Range("A4").FormulaR1C1 = "2"
ActiveSheet.Range("A3:A4").AutoFill Destination:=Range("A3:A" & T + 80)
End With
With Sheets("KHOI_10")
R = .[B10000].End(xlUp).Row + 1
.Range(Sheets("KHOI_10").Rows(R), Sheets("KHOI_10").Rows(10000)).Delete Shift:=xlUp
Sheets("A1").Range("A1:C1").Copy Sheets("KHOI_10").Range("A2")

End With

End Sub
Nhìn code bạn viết khiến tôi nhớ lại "NHỮNG NGÀY ĐẦU" của mình (chắc viết cở đó là cùng)... Tuy code rất dở nhưng cũng khoái vì là do mình tự mày mò viết ra
Nhưng dù code viết có tệ đến đâu cũng cố gắng trình bày đẹp mắt chút ha! Kiểu vầy:
PHP:
Private Sub CommandButton2_Click()
  Dim Vung As Range, I As Integer, T As Long, R As Long
  Sheets("KHOI_10").Range("A2:K10000").Clear
  For I = 1 To 5
    T = 1 + (80 * (I - 1))
    Set Vung = Sheets("A" & I).Range("A2:C82")
    Vung.Copy Sheets("KHOI_10").Range("A" & T + 4)
  Next
  With Sheets("KHOI_10").Range("A3:A" & T + 80).Resize(, 3)
    .Sort Sheets("KHOI_10").[C2], 1
    ActiveSheet.Range("A3").FormulaR1C1 = "1"
    ActiveSheet.Range("A4").FormulaR1C1 = "2"
    ActiveSheet.Range("A3:A4").AutoFill Destination:=Range("A3:A" & T + 80)
  End With
  With Sheets("KHOI_10")
    R = .[B10000].End(xlUp).Row + 1
    .Range(Sheets("KHOI_10").Rows(R), Sheets("KHOI_10").Rows(10000)).Delete Shift:=xlUp
    Sheets("A1").Range("A1:C1").Copy Sheets("KHOI_10").Range("A2")
  End With
End Sub
Cố gắng lên bạn nhé!
(Spam tí đở buồn)
 
Lần chỉnh sửa cuối:
Nhìn code bạn viết khiến tôi nhớ lại "NHỮNG NGÀY ĐẦU" của mình (chắc viết cở đó là cùng)... Tuy code rất dở nhưng cũng khoái vì là do mình tự mày mò viết ra
Nhưng dù code viết có tệ đến đâu cũng cố gắng trình bày đẹp mắt chút ha! Kiểu vầy:
PHP:
Private Sub CommandButton2_Click()
Dim Vung As Range, I As Integer, T As Long, R As Long
Sheets("KHOI_10").Range("A2:K10000").Clear
For I = 1 To 5
T = 1 + (80 * (I - 1))
Set Vung = Sheets("A" & I).Range("A2:C82")
Vung.Copy Sheets("KHOI_10").Range("A" & T + 4)
Next
With Sheets("KHOI_10").Range("A3:A" & T + 80).Resize(, 3)
.Sort Sheets("KHOI_10").[C2], 1
ActiveSheet.Range("A3").FormulaR1C1 = "1"
ActiveSheet.Range("A4").FormulaR1C1 = "2"
ActiveSheet.Range("A3:A4").AutoFill Destination:=Range("A3:A" & T + 80)
End With
With Sheets("KHOI_10")
R = .[B10000].End(xlUp).Row + 1
.Range(Sheets("KHOI_10").Rows(R), Sheets("KHOI_10").Rows(10000)).Delete Shift:=xlUp
Sheets("A1").Range("A1:C1").Copy Sheets("KHOI_10").Range("A2")
End With
End Sub
Cố gắng lên bạn nhé!Nhưng dù code viết có tệ đến đâu cũng cố gắng trình bày đẹp mắt chút ha! Kiểu vầy:

(Spam tí đở buồn)
làm cách nào để trình bày được như bác vậy
thôi thì chỉ dùm em bác nhé
 
Lần chỉnh sửa cuối:
Thêm 1 cái nữa cho xôm tụ

PHP:
Option Explicit

Sub CopyFrom5To1()
 Dim Sh As Worksheet
 
 Sheets("Khoi_10").Select
 For Each Sh In Worksheets
   If Left(Sh.Name, 1) = "A" And Right(Sh.Name, 1) < "6" Then
      With [B65500].End(xlUp)
         Sh.[b1].CurrentRegion.Offset(1, 1).Copy Destination:=.Offset(1)
      End With
   End If
 Next Sh
End Sub
 
Lần chỉnh sửa cuối:
Mình xin hỏi chút nữa
Nếu Sheet khoi_10 bắt đầu nhận không phải A2 mà nhận ở A6 thì sửa Code thế nào , nhờ GPE giúp với
file vidu_copy2 đính kèm
 

File đính kèm

Mình xin hỏi chút nữa
Nếu Sheet khoi_10 bắt đầu nhận không phải A2 mà nhận ở A6 thì sửa Code thế nào , nhờ GPE giúp với
file vidu_copy2 đính kèm
thì sửa lại như sau
PHP:
Private Sub CommandButton1_Click()
Dim Vung As Range, I As Integer, T As Long, R As Long
Sheets("KHOI_10").Range("A6:K10000").Clear
For I = 1 To 5
T = 1 + (80 * (I - 1))
Set Vung = Sheets("A" & I).Range("A2:C82")
Vung.Copy Sheets("KHOI_10").Range("A" & T + 5)
Next
With Sheets("KHOI_10").Range("A6:A" & T + 80).Resize(, 3)
.Sort Sheets("KHOI_10").[C2], 1
ActiveSheet.Range("A6").FormulaR1C1 = "1"
ActiveSheet.Range("A7").FormulaR1C1 = "2"
ActiveSheet.Range("A6:A7").AutoFill Destination:=Range("A6:A" & T + 80)
End With
With Sheets("KHOI_10")
R = .[B10000].End(xlUp).Row + 1
.Range(Sheets("KHOI_10").Rows(R), Sheets("KHOI_10").Rows(10000)).Delete Shift:=xlUp
Sheets("A1").Range("A1:C1").Copy Sheets("KHOI_10").Range("A5")
End With
End Sub
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom