Tự động update dữ liệu từ sheet này sang sheet khác

Liên hệ QC

Ng_Duy_Long

Thành viên mới
Tham gia
7/2/07
Bài viết
47
Được thích
24
Tự động update dữ liệu từ sheet này sang sheet khác
 

File đính kèm

  • Copy.xls
    15 KB · Đọc: 848
Hình như câu hỏi này hơi đơn giản thì phải :D. Nếu là tớ thì đặt công thức ở cột A sheet 2 = cột A sheet 1.
Nếu dữ liệu quá dài thì dùng sự kiện selection change ở sheet 1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("a:a")
If Not Intersect(Target, rng) Is Nothing Then
Sheets("Sheet2").Columns("A:A").Value = Sheets("Sheet1").Columns("A:A").Value
End If

End Sub
 
Làm như vậy thì toàn bộ số liệu ở cột A của sheet2 bằng toàn bộ số liệu ở cột A của sheet1. Mình chỉ muốn những dữ liệu mới cập nhật vào sheet1 sẽ được copy sang sheet2. Chẳng hạn mình copy dữ liệu nào đó vào ô A4:A10 thì dòng cuối cùng cột A ở sheet2 (i = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row) sẽ cập nhật dữ liệu của ô A4:A10 của sheet1
 
Làm như vậy thì toàn bộ số liệu ở cột A của sheet2 bằng toàn bộ số liệu ở cột A của sheet1. Mình chỉ muốn những dữ liệu mới cập nhật vào sheet1 sẽ được copy sang sheet2. Chẳng hạn mình copy dữ liệu nào đó vào ô A4:A10 thì dòng cuối cùng cột A ở sheet2 (i = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row) sẽ cập nhật dữ liệu của ô A4:A10 của sheet1
Làm thế chẳng phải là không được! Ví dụ đoạn code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:A1000], Target) Is Nothing Then
    Sheet2.Range("A65536").End(xlUp).Offset(1) = Target
  End If
End Sub
Tuy nhiên tôi lại chẳng thấy dùng thế có gì hay... mỗi lần gõ là 1 lần code chạy... "nhức đầu" lắm!
Thông thường trường hợp này người ta dùng UserForm.. Còn không thì sau khi gõ xong dử liệu sẽ bấm nút 1 nhát cho nó cập nhật (code chỉ chạy 1 lần)
 

File đính kèm

  • Update.xls
    23 KB · Đọc: 1,094
Cám ơn ndu96081631 , làm bằng Form thì mình cũng làm được. Code của ndu mới chỉ áp dụng được nếu đánh trực tiếp vào cột A, còn nếu copy dữ liệu nào đó vào cột A thì dữ liệu ở sheet2 ko update.
 
Cám ơn ndu96081631 , làm bằng Form thì mình cũng làm được. Code của ndu mới chỉ áp dụng được nếu đánh trực tiếp vào cột A, còn nếu copy dữ liệu nào đó vào cột A thì dữ liệu ở sheet2 ko update.
Thì đương nhiên là vậy! Vì target chỉ có 1 cell
Nếu bạn muốn copy dử liệu khác paste vào nó vẩn chạy được thì phải... For... Next... hay gì gì đó.. rất ư là cực khổ! Vì thế mà mình mới khuyên bạn nên dùng Sub, chạy code 1 lần duy nhất khi nào bạn muốn cập nhật dử liệu
(Tức ý mình muốn nói yêu cầu của bạn vẫn làm được, nhưng bạn phải trả giá vì code lúc nào cũng chạy sẽ ảnh hưởng tốc độ)
 
Làm thế chẳng phải là không được! Ví dụ đoạn code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:A1000], Target) Is Nothing Then
    Sheet2.Range("A65536").End(xlUp).Offset(1) = Target
  End If
End Sub
Tuy nhiên tôi lại chẳng thấy dùng thế có gì hay... mỗi lần gõ là 1 lần code chạy... "nhức đầu" lắm!
Thông thường trường hợp này người ta dùng UserForm.. Còn không thì sau khi gõ xong dử liệu sẽ bấm nút 1 nhát cho nó cập nhật (code chỉ chạy 1 lần)

còn nếu mình muốn doan code update này chỉ hoat động sau khi bấm nút button được không vậy bác ?
 
Làm thế chẳng phải là không được! Ví dụ đoạn code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:A1000], Target) Is Nothing Then
    Sheet2.Range("A65536").End(xlUp).Offset(1) = Target
  End If
End Sub
Tuy nhiên tôi lại chẳng thấy dùng thế có gì hay... mỗi lần gõ là 1 lần code chạy... "nhức đầu" lắm!
Thông thường trường hợp này người ta dùng UserForm.. Còn không thì sau khi gõ xong dử liệu sẽ bấm nút 1 nhát cho nó cập nhật (code chỉ chạy 1 lần)

Bác ơi, cũng file này nếu ở sheet1 có nhiếu muc dữ liệu, khi thêm dữ liệu ở mục nào của sheet 1 thì tự động insert cập nhật vào sheet 2 được không. Giúp em với.

Cảm ơn nhiều!
 
bác hướng dẫn chi tiết hơn được không, em làm hoài mà ko được, không biết bắt đầu từ đâu
 
Như bài này mình muốn tạo nút CapNhat để khi cần mình nhấn nó mới update thì làm sao ? Ai biết giúp mình với nha vì mình không biết mấy cái này mà đang cần. Thnaks
 
Chào các anh các chị, các bạn!
Em có 1 file, gồm: 12 sheet chứng từ theo tháng, 1 sheet tonghop, sheet1 và sheet CSDL. Em có viết đoạn mã vb tự động cập nhật 12 sheet chứng từ vào sheet tonghop (ko cập nhật sheet 1 và sheet CSDL). Các anh/chị và các bạn giúp em sửa lại đoạn mã vb sao cho phần update bên sheet tonghop đã loại trừ dòng TOTAL, dòng trống ở mỗi sheet chứng từ và bên sheet tonghop phần dữ liệu update tự động định dạng border theo số liệu hiện hữu.
Xin cảm ơn
 

File đính kèm

  • KCBT 2019.xls
    199.5 KB · Đọc: 139
Chào các anh các chị, các bạn!
Em có 1 file, gồm: 12 sheet chứng từ theo tháng, 1 sheet tonghop, sheet1 và sheet CSDL. Em có viết đoạn mã vb tự động cập nhật 12 sheet chứng từ vào sheet tonghop (ko cập nhật sheet 1 và sheet CSDL). Các anh/chị và các bạn giúp em sửa lại đoạn mã vb sao cho phần update bên sheet tonghop đã loại trừ dòng TOTAL, dòng trống ở mỗi sheet chứng từ và bên sheet tonghop phần dữ liệu update tự động định dạng border theo số liệu hiện hữu.
Xin cảm ơn
Ban thu code nay minh chinh 1 it chua test.
Mã:
Private Sub Worksheet_Activate()
    Dim i As Long, fR As Long, lR As Long, Rws As Long, LT
    Application.ScreenUpdating = False
    [4:65000].Delete 'Xoa du lieu hien co
    Sheets(Array("TONGHOP", "Sheet1", "CSDL")).Move Before:=Sheets(1) 'Di chuyen sheet len dau
    For i = 4 To Sheets.Count 'Lam viec voi sheet thu 3 tro di (tru sheet TONGHOP va Ref)
        lR = Sheets(i).[A65000].End(xlUp).Row 'Xac dinh dong cuoi chua du lieu
        If lR > 3 Then 'Neu co du lieu thi thuc hien
            fR = 4 'Xac dinh dong dau cua sheet i
            LT = Sheets("tonghop").Range("A" & Rows.Count).End(xlUp).Row + 1
            Sheets(i).Range("A4:M" & lR).Copy Sheets("tonghop").Range("A" & LT)
        End If
    Next
      Application.ScreenUpdating = True
End Sub
 
Ban thu code nay minh chinh 1 it chua test.
Mã:
Private Sub Worksheet_Activate()
    Dim i As Long, fR As Long, lR As Long, Rws As Long, LT
    Application.ScreenUpdating = False
    [4:65000].Delete 'Xoa du lieu hien co
    Sheets(Array("TONGHOP", "Sheet1", "CSDL")).Move Before:=Sheets(1) 'Di chuyen sheet len dau
    For i = 4 To Sheets.Count 'Lam viec voi sheet thu 3 tro di (tru sheet TONGHOP va Ref)
        lR = Sheets(i).[A65000].End(xlUp).Row 'Xac dinh dong cuoi chua du lieu
        If lR > 3 Then 'Neu co du lieu thi thuc hien
            fR = 4 'Xac dinh dong dau cua sheet i
            LT = Sheets("tonghop").Range("A" & Rows.Count).End(xlUp).Row + 1
            Sheets(i).Range("A4:M" & lR).Copy Sheets("tonghop").Range("A" & LT)
        End If
    Next
      Application.ScreenUpdating = True
End Sub
Đoạn code của bạn copy qua sheet "tonghop" đúng định dạng nhưng vẫn chưa loại trừ được hàng total tại các sheet tháng, bạn giúp mình chỉnh thêm đoạn code trên nhé. Cám ơn bạn
 
Đoạn code của bạn copy qua sheet "tonghop" đúng định dạng nhưng vẫn chưa loại trừ được hàng total tại các sheet tháng, bạn giúp mình chỉnh thêm đoạn code trên nhé. Cám ơn bạn
An toàn nhất là bạn chỉnh lại các sheet từ T1 đến T12, ô chứa chữ TOTAL sang cột B (Cột A để trống - Không bị Merge Cells)
 
Làm thế chẳng phải là không được! Ví dụ đoạn code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:A1000], Target) Is Nothing Then
    Sheet2.Range("A65536").End(xlUp).Offset(1) = Target
  End If
End Sub
Tuy nhiên tôi lại chẳng thấy dùng thế có gì hay... mỗi lần gõ là 1 lần code chạy... "nhức đầu" lắm!
Thông thường trường hợp này người ta dùng UserForm.. Còn không thì sau khi gõ xong dử liệu sẽ bấm nút 1 nhát cho nó cập nhật (code chỉ chạy 1 lần)
có thể hướng dẫn cho e cách làm theo phương pháp này với được ko ạ,e cũng đang cần giải pháp như vậy.như file của e đang cần mỗi lần thêm hóa đơn bán hàng nó sẽ tự động cập nhật thông tin từ sheet HDBH sang sheet XUAT ạ
 

File đính kèm

  • Book1.xlsx
    19.6 KB · Đọc: 60
Làm thế chẳng phải là không được! Ví dụ đoạn code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:A1000], Target) Is Nothing Then
    Sheet2.Range("A65536").End(xlUp).Offset(1) = Target
  End If
End Sub
Tuy nhiên tôi lại chẳng thấy dùng thế có gì hay... mỗi lần gõ là 1 lần code chạy... "nhức đầu" lắm!
Thông thường trường hợp này người ta dùng UserForm.. Còn không thì sau khi gõ xong dử liệu sẽ bấm nút 1 nhát cho nó cập nhật (code chỉ chạy 1 lần)
m có file này mong mọi người giúp đỡ, e muốn nhập dự liệu bên sheet line 1 tự động chuyển dữ liệu qua sheet 1( các ô ở 2 sheet e đã tô mà vàng) khi e xóa dữ liệu bên sheet LINE 1 thì bên Sheet 1 không mất đi ạ, e xin cảmơn!
 

File đính kèm

  • THONG BAO.xlsx
    187.4 KB · Đọc: 17
m có file này mong mọi người giúp đỡ, e muốn nhập dự liệu bên sheet line 1 tự động chuyển dữ liệu qua sheet 1( các ô ở 2 sheet e đã tô mà vàng) khi e xóa dữ liệu bên sheet LINE 1 thì bên Sheet 1 không mất đi ạ, e xin cảmơn!
bạn đăng bài hỏi cùng một nội dung mà ở nhiều mục là vi phạm nội quy đó.
Bài đã được tự động gộp:

m có file này mong mọi người giúp đỡ, e muốn nhập dự liệu bên sheet line 1 tự động chuyển dữ liệu qua sheet 1( các ô ở 2 sheet e đã tô mà vàng) khi e xóa dữ liệu bên sheet LINE 1 thì bên Sheet 1 không mất đi ạ, e xin cảmơn!
Bạn vi phạm nội quy diễn đàn.
1622464431929.png
 
Web KT
Back
Top Bottom