Copy paste bằng VBA

Liên hệ QC

tvt232

Thành viên mới
Tham gia
14/11/07
Bài viết
23
Được thích
4
Mình có 1 file (xem file đính kèm) , mình cần copy data từ sheet1 sang sheet2 , chỉ những row có số liệu (từ 2 đến 16 - lúc nào cũng bắt đầu từ row 2) và paste value vào dòng liền kề với dòng có dữ liệu cuối cùng bên sheet2 (dòng 17).
Do làm hàng ngày nên mình cần dùng macro cho tiện , ACE cao thủ cho mình xin cái macro với.

Điều kiện :
  1. Mảng dữ liệu để copy trong sheet1 : luôn bắt đầu từ row 2 (từ cột A đến cột O) và kết thúc ở row cuối cùng có dữ liệu (không tính các giá trị 0)
  2. Paste value vào row liền kề với row có dữ liệu cuối cùng bên sheet2 (từ cột A đến cột O)
Xin cám ơn trước....
 

File đính kèm

  • VBA copy.xlsx
    22.3 KB · Đọc: 10
1 cách:
PHP:
Sub Macro1()
    Dim LR1 As Long, LR2 As Long
    LR1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
    LR2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1
    Sheet1.Range("A2:a" & LR1).SpecialCells(xlCellTypeFormulas, 2).Resize(, 15).Copy
    Sheet2.Range("A" & LR2).PasteSpecial xlPasteValues
End Sub
 
1 cách:
PHP:
Sub Macro1()
    Dim LR1 As Long, LR2 As Long
    LR1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
    LR2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1
    Sheet1.Range("A2:a" & LR1).SpecialCells(xlCellTypeFormulas, 2).Resize(, 15).Copy
    Sheet2.Range("A" & LR2).PasteSpecial xlPasteValues
End Sub
Quá tốt bạn ơi.. nhưng khi kết thúc thì mình thấy nó file ở chế độ copy và ở sheet1 , giờ mình muốn nó ở sheet2 và thoát khỏi ché độ copy thì phải thế nào vậy bạn???
Bài đã được tự động gộp:

1 cách:
PHP:
Sub Macro1()
    Dim LR1 As Long, LR2 As Long
    LR1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
    LR2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1
    Sheet1.Range("A2:a" & LR1).SpecialCells(xlCellTypeFormulas, 2).Resize(, 15).Copy
    Sheet2.Range("A" & LR2).PasteSpecial xlPasteValues
End Sub
Mình hỏi thêm nếu ở 2 file khác nhau thì thêm vào code cái nữa vậy bạn??
 
Quá tốt bạn ơi.. nhưng khi kết thúc thì mình thấy nó file ở chế độ copy và ở sheet1 , giờ mình muốn nó ở sheet2 và thoát khỏi ché độ copy thì phải thế nào vậy bạn???
Bạn thêm vào cuối Code:
PHP:
 Application.CutCopyMode = False
    Sheet2.Select
 
Quá tốt bạn ơi.. nhưng khi kết thúc thì mình thấy nó file ở chế độ copy và ở sheet1 , giờ mình muốn nó ở sheet2 và thoát khỏi ché độ copy thì phải thế nào vậy bạn???
Bài đã được tự động gộp:


Mình hỏi thêm nếu ở 2 file khác nhau thì thêm vào code cái nữa vậy bạn??
Bạn đưa 2 File đó lên đây( File giả lập) tôi xem. Bây giờ tôi phải về nhà rồi.
 
Bạn đưa 2 File đó lên đây( File giả lập) tôi xem. Bây giờ tôi phải về nhà rồi.
Gửi bro ... Thay vì copy từ sheet1 sang sheet2 như ban đầu , giờ mình muốn từ sheet1 file VBA copy sang sheet1 file VBA paste value...
Sorry vì 2 code khác nhau nên mình không biết bắt chước thế nào ...
Cám ơn bro rất nhiều
 

File đính kèm

  • VBA copy.xlsx
    19.2 KB · Đọc: 3
  • VBA paste value.xlsx
    26.8 KB · Đọc: 4
Gửi bro ... Thay vì copy từ sheet1 sang sheet2 như ban đầu , giờ mình muốn từ sheet1 file VBA copy sang sheet1 file VBA paste value...
Sorry vì 2 code khác nhau nên mình không biết bắt chước thế nào ...
Cám ơn bro rất nhiều
Thế cái file VBA paste bạn lưu nó ở đâu.
Khi paste nó có mở không hay nó đóng.
 
Gửi bro ... Thay vì copy từ sheet1 sang sheet2 như ban đầu , giờ mình muốn từ sheet1 file VBA copy sang sheet1 file VBA paste value...
Sorry vì 2 code khác nhau nên mình không biết bắt chước thế nào ...
Cám ơn bro rất nhiều
Bạn thử:
PHP:
Sub Test()
    Dim Wb As Workbook, Tieude: Tieude = "GPE"
    Dim xAddWb As Workbook
    Dim Rng1 As Range, Rng2 As Range
    Set Wb = Application.ActiveWorkbook
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count > 0 Then
            Application.Workbooks.Open .SelectedItems(1)
            Set xAddWb = Application.ActiveWorkbook
            Set Rng1 = Application.InputBox(prompt:="Chon vung can Copy", Title:=Tieude, Type:=8)
            Wb.Activate
            Set Rng2 = Application.InputBox(prompt:="Chon Cell gan ket qua", Title:=Tieude, Type:=8)
            Rng1.Copy
            Rng2.PasteSpecial xlPasteValues
            xAddWb.Close False
        End If
    End With
End Sub
 
Thế cái file VBA paste bạn lưu nó ở đâu.
Khi paste nó có mở không hay nó đóng.
save cùng folder bạn...

Bạn thử:
PHP:
Sub Test()
    Dim Wb As Workbook, Tieude: Tieude = "GPE"
    Dim xAddWb As Workbook
    Dim Rng1 As Range, Rng2 As Range
    Set Wb = Application.ActiveWorkbook
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count > 0 Then
            Application.Workbooks.Open .SelectedItems(1)
            Set xAddWb = Application.ActiveWorkbook
            Set Rng1 = Application.InputBox(prompt:="Chon vung can Copy", Title:=Tieude, Type:=8)
            Wb.Activate
            Set Rng2 = Application.InputBox(prompt:="Chon Cell gan ket qua", Title:=Tieude, Type:=8)
            Rng1.Copy
            Rng2.PasteSpecial xlPasteValues
            xAddWb.Close False
        End If
    End With
End Sub
Code trước bro làm mình còn hiểu , code này nhìn không biết làm gì luôn ... Bro có thể viết thực tế giống code trước không?? Viết tổng thể thế này mình không biết thay thế ở đâu cả..
Many tks......
 
Web KT
Back
Top Bottom