xuất ra địa chỉ address của hàng đã nhập hoặc đã dán paste/insert dữ liệu vào

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

tranhungkcn

Thành viên mới
Tham gia
4/1/09
Bài viết
9
Được thích
4
Nhờ các anh/chị/bạn giúp giùm. em/mình tìm trên mạng chỉ thấy nói về 1 cell thay đổi giá trị.
Mục đích:
có 2 sheet,
sheet 1 là các dữ liệu được chia theo chủng loại từ trên xuống, ví dụ ở đầu là mỹ phẩm, sau là thức ăn, gia vị.....
khi có hàng hóa mới nhập vào thì có thể chèn thêm row mới nhập tay, hoặc copy paste/insert từ file gốc nhà cung cấp vào chủng loại tương ứng.
sheet 2 không chia theo chủng loại, mà chỉ là khi thêm dữ liệu vào sheet 1 thì copy, sang sheet 2 paste ngay hàng tiếp theo
Mong muốn: Tại sheet 1, tại bất kỳ hàng (row) nào trên sheet 1, sau khi nhập tay xong các ô trên 1 hàng row (tên, số lượng, đơn giá), hoặc paste, hoặc insert toàn bộ hàng (row), thì tự động copy toàn bộ row đó sang row đầu tiên còn trống tại sheet 2
Xin cảm ơn mọi người nhiều, cũng tìm đọc rất nhiều bài trên này mà chưa thấy bài nào có ý tưởng gần giống, chủ yếu là phát hiện thay đổi trên cell do nhập vào, nên mạo muội đăng bài nhờ giúp.
Nếu có bị trùng, spam thì mọi người thông cảm nhé
 

File đính kèm

  • Ví dụ.xlsx
    9.7 KB · Đọc: 9
Giải pháp
thì được. Hơn nữa thì trịu.
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim newRow&
'    Dim VungNhap As Range
'    Set VungNhap = [D:D]
'    If Not Intersect(Target, VungNhap) Is Nothing Then
        If Application.CountA(Target.EntireRow) = 3 Then
            With Sheet2
            newRow = .Cells(1, 1).End(xlDown).Row + 1
            .Cells(newRow, 1).EntireRow.Value = Sheet1.Cells(Target.Row, 1).EntireRow.Value
            End With
        End If
'    End If
    Application.EnableEvents = True
End Sub
Nhờ các anh/chị/bạn giúp giùm. em/mình tìm trên mạng chỉ thấy nói về 1 cell thay đổi giá trị.
Mục đích:
có 2 sheet,
sheet 1 là các dữ liệu được chia theo chủng loại từ trên xuống, ví dụ ở đầu là mỹ phẩm, sau là thức ăn, gia vị.....
khi có hàng hóa mới nhập vào thì có thể chèn thêm row mới nhập tay, hoặc copy paste/insert từ file gốc nhà cung cấp vào chủng loại tương ứng.
sheet 2 không chia theo chủng loại, mà chỉ là khi thêm dữ liệu vào sheet 1 thì copy, sang sheet 2 paste ngay hàng tiếp theo
Mong muốn: Tại sheet 1, tại bất kỳ hàng (row) nào trên sheet 1, sau khi nhập tay xong các ô trên 1 hàng row (tên, số lượng, đơn giá), hoặc paste, hoặc insert toàn bộ hàng (row), thì tự động copy toàn bộ row đó sang row đầu tiên còn trống tại sheet 2
Xin cảm ơn mọi người nhiều, cũng tìm đọc rất nhiều bài trên này mà chưa thấy bài nào có ý tưởng gần giống, chủ yếu là phát hiện thay đổi trên cell do nhập vào, nên mạo muội đăng bài nhờ giúp.
Nếu có bị trùng, spam thì mọi người thông cảm nhé
Bài toán của bạn đưa ra rất nhiều trường hợp nên tốt nhất bạn nên tạo cái form nhập liệu xong dữ liệu được điền vào 2 sheets có vẻ hợp lý.
 
Upvote 0
Bài toán của bạn đưa ra rất nhiều trường hợp nên tốt nhất bạn nên tạo cái form nhập liệu xong dữ liệu được điền vào 2 sheets có vẻ hợp lý.
em cứ tưởng cái này đơn giản chứ (tại em không biết có các lệnh như tưởng tượng không), ý tưởng code kiểu như kiểm tra có cell nào đổi giá trị không, nếu có thì đã điền đủ các ô yêu cầu trên row đó chưa, nếu rồi thì copy, sang sheet 2 kiểm tra row còn trống đầu tiên địa chỉ bao nhiêu, paste vào row đấy.
Còn nếu làm form hơi phức tạp là phải chọn thống nhất item này thuộc chủng loại nào (có thể có một nút xổ xuống để chọn), sau đó VBA sẽ tìm đến vùng chủng loại đó, insert data vào. bước này thì em đang làm thủ công thôi, ctrl+F, cần tương đối à, ví dụ như bơ thì có thể search "thực phẩm" hoặc "gia vị" cũng không sao.
 
Upvote 0
thì được. Hơn nữa thì trịu.
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim newRow&
'    Dim VungNhap As Range
'    Set VungNhap = [D:D]
'    If Not Intersect(Target, VungNhap) Is Nothing Then
        If Application.CountA(Target.EntireRow) = 3 Then
            With Sheet2
            newRow = .Cells(1, 1).End(xlDown).Row + 1
            .Cells(newRow, 1).EntireRow.Value = Sheet1.Cells(Target.Row, 1).EntireRow.Value
            End With
        End If
'    End If
    Application.EnableEvents = True
End Sub
 
Upvote 0
Giải pháp
thì được. Hơn nữa thì trịu.
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim newRow&
'    Dim VungNhap As Range
'    Set VungNhap = [D:D]
'    If Not Intersect(Target, VungNhap) Is Nothing Then
        If Application.CountA(Target.EntireRow) = 3 Then
            With Sheet2
            newRow = .Cells(1, 1).End(xlDown).Row + 1
            .Cells(newRow, 1).EntireRow.Value = Sheet1.Cells(Target.Row, 1).EntireRow.Value
            End With
        End If
'    End If
    Application.EnableEvents = True
End Sub
Cảm ơn bác nhiều, đúng cái em cần rồi.
Bữa trước nghe nói khó nên làm tay hôm giờ, không vào diễn đàn. Hôm nay lang thang vào mới thấy.
cảm ơn bác lần nữa nhé
 
Upvote 0
Web KT
Back
Top Bottom