Giúp tạo nút cập nhật dữ liệu từ sheet 1 sang sheet 2!

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
Chào các a chị trong diễn đàn ạ!
- E nhờ các anh chị trong diễn đàn chỉ giúp e tạo nút chuyển dữ liệu từ sheet "nhaplieu" sang sheet "Data" với điều kiện sau ạ:
+ Điều kiện 1: tại sheet "nhaplieu" khi e nhập dữ liệu các ô xong rồi e ấn nút chuyển dữ liệu nó sẽ nhảy sang sheet data và xóa công thức giữ giá trị.
+ Điều kiện 2: xóa dữ liệu tại sheet "nhaplieu" nhập từ số liệu từ đầu khi chọn nút chuyển dữ liệu sẽ được cộng tiếp vào dòng dưới của sheet "Data" có nghĩa là tại sheet "nhaplieu" khi xóa trắng dữ liệu cũ nhập tiếp dữ liệu mới khi chọn nút chuyển bản ghi sẽ được nối dòng tiếp theo dữ liệu có lưu từ trước bên sheet "Data".
Nhờ các bác giúp đỡ ạ! Chân thành cảm ơn các a chị giúp đỡ.
 

File đính kèm

XuanThanh

Thành viên thường trực
Tham gia ngày
20 Tháng ba 2007
Bài viết
241
Được thích
348
Điểm
710
1/ Góp ý với bạn về CSDL
Trong sheet NhapLieu nen đưa Madv về cột A, VLOOKUP cho cột B là Tendv
2/ Bạn đã có Sub Luu nhưng chưa hoàn chỉnh. Sửa lại Sub Luu một chút
Mã:
Sub Luu() 
    Application.ScreenUpdating = False
    Dim shForm As Worksheet
    Dim shData As Worksheet
    Dim dFrom As Long
    Dim dData As Long
    Set shForm = ThisWorkbook.Worksheets("nhaplieu")
    Set shData = ThisWorkbook.Worksheets("Data")
    dData = shData.Range("A" & Rows.Count).End(xlUp).Row
    dFrom = shForm.Range("A" & Rows.Count).End(xlUp).Row
    shForm.Range("A3:F" & dFrom).Copy
    shData.Range("A" & dData + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    shForm.Range("A3:F" & dFrom).ClearContents
    Application.ScreenUpdating = False
    MsgBox "Xong"
End Sub
3/ Đưa Sub này vô Sheet NhapLieu
 

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
1/ Góp ý với bạn về CSDL
Trong sheet NhapLieu nen đưa Madv về cột A, VLOOKUP cho cột B là Tendv
2/ Bạn đã có Sub Luu nhưng chưa hoàn chỉnh. Sửa lại Sub Luu một chút
Mã:
Sub Luu()
    Application.ScreenUpdating = False
    Dim shForm As Worksheet
    Dim shData As Worksheet
    Dim dFrom As Long
    Dim dData As Long
    Set shForm = ThisWorkbook.Worksheets("nhaplieu")
    Set shData = ThisWorkbook.Worksheets("Data")
    dData = shData.Range("A" & Rows.Count).End(xlUp).Row
    dFrom = shForm.Range("A" & Rows.Count).End(xlUp).Row
    shForm.Range("A3:F" & dFrom).Copy
    shData.Range("A" & dData + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    shForm.Range("A3:F" & dFrom).ClearContents
    Application.ScreenUpdating = False
    MsgBox "Xong"
End Sub
3/ Đưa Sub này vô Sheet NhapLieu
Cảm ơn bạn nhé
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,546
Được thích
8,337
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Chào các a chị trong diễn đàn ạ!
- E nhờ các anh chị trong diễn đàn chỉ giúp e tạo nút chuyển dữ liệu từ sheet "nhaplieu" sang sheet "Data" với điều kiện sau ạ:
+ Điều kiện 1: tại sheet "nhaplieu" khi e nhập dữ liệu các ô xong rồi e ấn nút chuyển dữ liệu nó sẽ nhảy sang sheet data và xóa công thức giữ giá trị.
+ Điều kiện 2: xóa dữ liệu tại sheet "nhaplieu" nhập từ số liệu từ đầu khi chọn nút chuyển dữ liệu sẽ được cộng tiếp vào dòng dưới của sheet "Data" có nghĩa là tại sheet "nhaplieu" khi xóa trắng dữ liệu cũ nhập tiếp dữ liệu mới khi chọn nút chuyển bản ghi sẽ được nối dòng tiếp theo dữ liệu có lưu từ trước bên sheet "Data".
Nhờ các bác giúp đỡ ạ! Chân thành cảm ơn các a chị giúp đỡ.
Thử dùng code sau:
Mã:
Sub PasteValueSheet2_SangSheet3()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
 

File đính kèm

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
Thử dùng code sau:
Mã:
Sub PasteValueSheet2_SangSheet3()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
Cảm ơn a nhiều
 

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
Thử dùng code sau:
Mã:
Sub PasteValueSheet2_SangSheet3()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
Code của a muốn giới hạn cột lưu bên Sheet2 sang Sheet3 như nào a. Vì e đánh thêm số liệu cột I của Sheet2 vẫn cho lưu ạ
 

XuanThanh

Thành viên thường trực
Tham gia ngày
20 Tháng ba 2007
Bài viết
241
Được thích
348
Điểm
710
Bũa trước chỉ sửa code có sẵn của bạn thôi. nếu tôi dùng thì thế này
Mã:
Sub CapNhat()
    If Sheet10.Range("A65000").End(xlUp).Row > 3 Then Sheet10.Range("A4:F" & Sheet10.Range("A65000").End(xlUp).Row).Clear
    Sheet2.Range("A3:F" & Sheet2.Range("A65000").End(xlUp).Row).Copy Destination:=Sheet10.Range("A4")
End Sub
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,546
Được thích
8,337
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Code của a muốn giới hạn cột lưu bên Sheet2 sang Sheet3 như nào a. Vì e đánh thêm số liệu cột I của Sheet2 vẫn cho lưu ạ
Chỉ thêm chỗ này .Resize(, 8)

Thay code bài 4 bằng code này
Mã:
Sub Copy_PasteValue()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Resize(, 8).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
Nếu chỉ Copy và Paste thì không cần đoạn này.
Mã:
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value 'Dòng này xóa hàm
        .[E3:E10000].FormatConditions.Delete 'Dòng này xóa Condition Formating
    End With
 
Lần chỉnh sửa cuối:

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
Chỉ thêm chỗ này .Resize(, 8)

Thay code bài 4 bằng code này
Mã:
Sub Copy_PasteValue()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Resize(, 8).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
Nếu chỉ Copy và Paste thì không cần đoạn này.
Mã:
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value 'Dòng này xóa hàm
        .[E3:E10000].FormatConditions.Delete 'Dòng này xóa Condition Formating
    End With
Chỉ thêm chỗ này .Resize(, 8)

Thay code bài 4 bằng code này
Mã:
Sub Copy_PasteValue()
    With Sheet2
        .[A2].CurrentRegion.Offset(1).Resize(, 8).Copy _
        Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
        .[B3:H17].ClearContents
    End With
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value
        .[E3:E10000].FormatConditions.Delete
    End With
End Sub
Nếu chỉ Copy và Paste thì không cần đoạn này.
Mã:
    With Sheet3
        .[A3].CurrentRegion.Value = .[A3].CurrentRegion.Value 'Dòng này xóa hàm
        .[E3:E10000].FormatConditions.Delete 'Dòng này xóa Condition Formating
    End With
bác có thể giúp file này được không. FIle này e có sheet "tonghop" và sheet "luudl" giờ em muốn cập nhật dữ liệu từ sheet "tonghop" từ cột A đến cột U sang bên sheet "luudl" và xoá bỏ công thức được không ạ. khi e dùng hàm của bác ấn cập thì từ cột S đến U ở sheet "luudl" không thể hiện số liệu. Ý em muốn cái gì hiện ở Sheet ""tonghop" từ A đến U thì khi ấn cập nhật thì hiện dữ liệu cũng từ A đến U ở Sheet "luudl" và có xoá bỏ công thức. E cảm ơn a nhiều
 

File đính kèm

Lần chỉnh sửa cuối:

XuanThanh

Thành viên thường trực
Tham gia ngày
20 Tháng ba 2007
Bài viết
241
Được thích
348
Điểm
710
Mã:
Sub CapNhat()
    If Sheet3.Range("A65000").End(xlUp).Row > 5 Then Sheet3.Range("A6:U" & Sheet3.Range("A65000").End(xlUp).Row).Clear
    Sheet2.Range("A3:U" & Sheet2.Range("A65000").End(xlUp).Row).Copy Destination:=Sheet3.Range("A6")
    Sheet3.Range("A6:U" & Sheet3.Range("A65000").End(xlUp).Row).Value = Sheet3.Range("A6:U" & Sheet3.Range("A65000").End(xlUp).Row).Value
End Sub
Giải thích : Nếu Sheet3(Sheet luudl) có số dòng cuối > 5 (lớn hơn hàng tiêu đề=5) thì xóa dữ liệu ở sheet này
Copy dữ liệu của Sheet2(Sheet tonghop) từ ô A3 đén ô U(và cuối dòng dữ liệu) dán vào Sheet 3 bắt đầu từ ô A6(phía dưới hàng tiêu đề), chỉ lấy giá trị, không lấy công thức
 
Lần chỉnh sửa cuối:

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,546
Được thích
8,337
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
bác có thể giúp file này được không. FIle này e có sheet "tonghop" và sheet "luudl" giờ em muốn cập nhật dữ liệu từ sheet "tonghop" từ cột A đến cột U sang bên sheet "luudl" và xoá bỏ công thức được không ạ. khi e dùng hàm của bác ấn cập thì từ cột S đến U ở sheet "luudl" không thể hiện số liệu. Ý em muốn cái gì hiện ở Sheet ""tonghop" từ A đến U thì khi ấn cập nhật thì hiện dữ liệu cũng từ A đến U ở Sheet "luudl" và có xoá bỏ công thức. E cảm ơn a nhiều
Với File này thì code phải viết kiểu khác.
Copy code này thay cho code cũ.
Mã:
Sub NhapLieu()
    With Sheet2
        .Range("A3", Range("A200").End(xlUp)).Resize(, 21).Copy _
            Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
    End With
    With Sheet3
        .[A6].CurrentRegion.Value = .[A6].CurrentRegion.Value
        .[A6].End(xlDown).Offset(1).Resize(120).EntireRow.Delete
    End With
End Sub
 

thanhnam0119

Thành viên hoạt động
Tham gia ngày
5 Tháng mười 2007
Bài viết
115
Được thích
4
Điểm
670
Tuổi
35
Với File này thì code phải viết kiểu khác.
Copy code này thay cho code cũ.
Mã:
Sub NhapLieu()
    With Sheet2
        .Range("A3", Range("A200").End(xlUp)).Resize(, 21).Copy _
            Destination:=Sheet3.[A65500].End(xlUp).Offset(1)
    End With
    With Sheet3
        .[A6].CurrentRegion.Value = .[A6].CurrentRegion.Value
        .[A6].End(xlDown).Offset(1).Resize(120).EntireRow.Delete
    End With
End Sub
Cột S đến cột U của sheet luudl không hiện dữ liệu a à
 

File đính kèm

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,546
Được thích
8,337
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai

File đính kèm

XuanThanh

Thành viên thường trực
Tham gia ngày
20 Tháng ba 2007
Bài viết
241
Được thích
348
Điểm
710
Mã:
Sub Nhap()
    With Sheet2
        .Range("A3", Range("A200").End(xlUp)).Resize(, 31).Copy _
            Destination:=Sheet3.[A65500].End(xlUp).Offset(1)    ' Thay 21 bằng 31
    End With
    With Sheet3
        .[A6].CurrentRegion.Value = .[A6].CurrentRegion.Value
        .[A6].End(xlDown).Offset(1).Resize(120).EntireRow.Delete
        .Range("V6:AE6").EntireColumn.Delete      'Thêm dòng này
    End With
End Sub
Lấy code của thầy be09 sửa lại chút it là được vì có công thức lấy ngoài vùng chọn nên thay 21 bằng 31 và thêm dòng xóa cột dư
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,546
Được thích
8,337
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
được rồi a à. cảm ơn a nhiều. ạ. e muốn học VBA từ a có được ko nhỉ ^^
Tôi tự mò học mọi thứ (Word, Excel), chứ không có đến lớp học vi tính ngày nào nên không có căn bản.
Những bài viết của tôi chỉ làm theo cãm tính.
Diễn đàn GPE thỉnh thoảng có những lớp dạy cơ bản, như trang này Học tập Offline
Bạn nên vào diễn đàn thường xuyên để xem thông tin lúc nào có lớp thì đăng ký.
 
Top Bottom