Tự động cập nhật dữ liệu (1 người xem)

  • Thread starter Thread starter ALOAN
  • Ngày gửi Ngày gửi
Liên hệ QC

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

ALOAN

Thành viên chính thức
Tham gia
6/11/07
Bài viết
88
Được thích
29
Nghề nghiệp
PURCHASING
Chào các Bác!!
Em là thành viên mới, chưa hiểu lám về hàm excel. Các Bác có thể giúp em bài tập sau:
Em muốn khi đánh thêm mã mới vào danh sách "MAT HANG", thì cột "LIET KE" tự động thêm mã mới vào.
Ai biết xin chỉ dùm.-=.,,
 
Vui lòng xem lại file của mình nha!!!!!!
&&&%$R
 

File đính kèm

Đây là cách khá đơn giản, dùng cột phụ.. Bạn tham khảo file nhé
Tất nhiên cũng có cách ko dùng cột phụ nào cả, chỉ dùng Name, nhưng phức tạp nhiều.. Tốt nhất bạn nên làm bài toán từ thấp lên cao
Mến
ANH TUẤN
 

File đính kèm

Trên diển đàn này có sẳn mấy file của tôi đấy! Ko dùng cột phụ... bạn chịu khó tìm.. giờ mà bắt làm lại thì.. hơi oải.. hi.. hi..
---------------------------
Mà thôi.. làm luôn, mất công anh em lại kiếm tùm lum... Xem nhé, chẳng có cột phụ nào cả..
Thử gõ nhăng nhít gì đó vào cột B xem nó cập nhật thế nào
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Em thấy file đó rôi. Công thức hay thật, nhưng em ngâm cứu chưa ra Hì
Sau này vẫn không hiểu được thì nhờ Bác chỉ giáo thêm nha!!!!!!
Em cũng thích VB lắm, nhưng chưa viết đươc. Nếu Bác biết cách chuyển sang VB thì chỉ cho em vợiEm sẽ cố gắng nhâm cứu thêm
Híc//////
 
Ah... Ah... sao ngu ghê... dùng Advanced Filter với sự kiện WorkSheet_Change... cực kỳ đơn giản...
Gữi file lên cho bạn gì đó tham khảo, thích cái nào thì xài cái ấy! Nhưng tôi nghĩ bạn xài cái dùng VBA này thì dễ hiểu hơn nhiều... Code chỉ có mấy dòng:
Mã:
Private Sub WorkSheet_Change(ByVal target As Range)
If Not Intersect(target, Range("B2:B1000")) Is Nothing Then  
[COLOR=red][I]'Dòng này đễ theo dỏi sự thay đổi khi nhập liệu, nhưng nếu dử liệu thay đổi ko nằm trong cột B thì sẽ ko làm gì cả... ngựoc lại thì.... [/I][/COLOR]:

Mã:
Rw = ActiveCell.Row  [I][COLOR=red]'Xác định cell hiện hành[/COLOR][/I]

Mã:
Range("B1:B1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
        "G1"), Unique:=True  [I][COLOR=red]'Dùng Advanced Filter đễ lọc ra danh sách duy nhất[/COLOR][/I]

Mã:
Range("G2:G1000").Select
       Selection.Sort Key1:=Range("G2"), Order1:=xlAscending
       Range("B" & Rw).Select [COLOR=red][I]'Sort danh sách theo thứ tự ABC[/I][/COLOR]

Chỉ vậy thôi.. rất đơn giản
Mến
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Thêm vào dòng
Mã:
Application.ScreenUpdating = False
cho nó khỏi giật màn hình.
 
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Cũng liên quan đến vấn đề tự đông update dữ liệu.
Mình có bài toán sau mong mọi ngưởi giúp đỡ.
Nội dung là: Từ 2 Bảng nguồn (Bang 1 & Bang 2), mình muốn khi update dữ liệu từ 1 trong 2 Bảng trên thì dữ liệu sẽ tự động cập nhật vào Bang 3.
Hi vọng sẽ nhận được sự chỉ dẫn sớm từ các bạn. Hic!!!!!
 

File đính kèm

Cái này cũng đâu có khó... Đâu tiên bạn hợp nhất bảng 1 và bảng 2 lại với nhau.. vậy là đã có 1 bảng chung... Bài toán lại quay về giống như trước
Cho hỏi: Tại sao bạn ko ghi 2 bảng ấy vào chung? Nếu sợ lẩn lộn thì thêm cột nửa, là cột REMARK, cái nào là ORDER1 thì ghi chú ORDER1, cái nào là ORDER2 thì ghi chú ORDER2.. có phải là tiện hơn ko?
Ai lại chia ra cho khó khăn vậy...
 
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Nói như bạn thì dễ nếu như dữ liệu trong Bảng 1 và Bảng 2 chỉ thêm dòng về phía dưới (thực tế là dữ liệu 2 Bảng này thay đổi toàn Bảng mỗi ngày). Điều này nghĩa là số item và order của 2 Bảng 1 và có thể thêm vào và cũng có thể mất đi.
Khi đó mình muốn dữ liệu tự động update vào Bảng 3.
Vì vậy nếu làm như thế thì hàng ngày mình phải thao tác tay để đưa dữ liệu vào Bảng 3.
Cố gắng suy nghĩ và giúp mình với nha, Please!!!!!!!!!!!!
 
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Vì 2 Bảng (1 va 2) hàng ngày mình phải lọc trên SQL xuống, mình đã tạo 2 form để khi chép dữ liệu từ SQL xong mình chỉ cần mở Bảng 1 và Bảng 2 cho dữ liệu tự Link vào .
Từ 2 Bảng này mình phải tổng hợp thành Bảng 3 thì mọi người mới dùng đươc.
Ngày nào cũng làm thao tác tay thì mất nhiều thời gian
Hi vọng mọi người có thể giúp mình đươc.
Cảm ơn mọi người trước nha.
 
Trời... thì như tôi đã nói.. nếu bạn ko nhập liệu 2 bảng chung làm 1 thì cứ đễ yên đấy... sang sheet khác bạn dùng công thức đễ hợp nhất 2 bảng làm 1... Đâu có khó gì... chì là những hàm tìm kiếm như VLOOPKUP hoặc INDEX.. chú ý cột đánh số thứ tự: Số thứ tự bảng 2 phải "nối đuôi" theo bảng 1... Vậy thôi
ANH TUẤN
 
Bạn cho mình VD luôn được không?
theo như bạn nói thì mình sẽ chuyển sang sheet khác để làm, nhưng mình muốn trong bảng này sẽ được viết công thức sẳn. Không hề có thao tác tay nào cả(kể cả việc copy item hoặc order sang). Nếu khi chuyển sang sheet tổng hợp mà phải thêm lệnh copy bằng tay thì chưa đúng ý mình.
 
Không phải mình lười(có chút chút), nhưng vì dữ liệu bảng 3(bảng tổng hợp còn được link từ nhiều nguồn khác, mà số liệu trong bảng thay đổi từng ngày. Vì vậy mình nhờ bạn giúp để công việc được nhanh hơn thôi. Hì!
 
Bạn cho hỏi... cái bảng 3 trong file của bạn là đã dc lọc dử liệu trùng ra chưa? Tại tôi thấy bảng 3 này chỉ là nối dử liệu giữa 1 và 2 mà thôi.. Trong bảng 3 đang có dử liệu trùng...
 
Dữ liệu 2 Bảng 1 và 2 là không trùng nhau.
Thân mến!!!!!
 
Hì! Xin lỗi Bác nha.
1. Ý em như mục 1:là nối Bảng 1 và Bảng 2 lại với nhau. Vì hiện tại 2 Bảng này không trùng(trùng ở đây là trong mỗi dòng chỉ tồn tại 1 item và 1 order mà thôi vd:[FONT=MS Pゴシック]7C82-5995[/FONT][FONT=MS Pゴシック]MV7112[/FONT][FONT=MS Pゴシック]7C82-5995[/FONT][FONT=MS Pゴシック]MV7111[/FONT]
trong 2 dòng dữ liệu như trên là không trùng.
2. Nếu được Bác giúp luôn trường hợp 2 luôn nha!
 
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Bác xem lại file đã được chỉnh sửa nha!
Em ghi dữ liệu load lên có chút sai lêch.
 

File đính kèm

Tôi hỏi lại 1 lần nữa cho rõ: trong bảng 1, số thứ tự 4 có dử liệu là:
AV 8 B..... MV7112
Tại số thứ tự 10 cũng là:
AV 8 B..... MV7112
Vậy 2 dòng này có xem là trùng ko?
1> Nếu bạn xem nó là trùng thì tại sao tại bảng 3 bạn ko bỏ bớt 1 cái
2> Nếu ko xem nó là trùng thì bài toán này quá dễ dàng, chỉ là nối bảng 1 với bảng 2 đễ tạo ra bảng 3
Tôi đang chờ bạn trả lời cho rõ sẽ làm và post kết quả lên ngay
 
Nếu như vậy là mình nhậm Hì!
(AV 8 B..... MV7112
Tại số thứ tự 10 cũng là:
AV 8 B..... MV7112)
Xin lỗi Bác nha Híc.
Vậy Bác nhờ Bác cho em cách xử lý khi điều kiện lọc như trích dẫn của Bác luôn nha:"2> Trích lọc dử liệu ko trùng của bảng 1 và trích lọc dử liệu ko trùng của bảng 2.. sau đó nối lại với nhau thành bảng 3".
Thân mến!!!

Ý của em là chỉ làm theo trường hợp 1.
Nếu được thì cho em cách giải quyết nếu rơi vào trường hợp 2 của Bác.
Biết nhiều vẫn hơn!Phải thế không Bác.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Thì tôi đang hỏi đây! Mà bạn thì vẫn chưa trả lời rõ ràng... Thật khó khăn cho tôi khi ko biết phải làm theo hướng nào? Giờ bạn nghe kỹ và trả lời 1 lần thật chính xác nhé! NHƯ THẾ NÀO THÌ DC XEM LÀ TRÙNG
Dử liệu của bạn có 4 cột, vậy trùng cột nào thì dc xem là trùng? Hay phải trùng hết cả 4 cột?
Khi đưa yêu cầu trợ giúp các bạn nên nói càng rõ ràng càng tốt, vì chỉ sai 1 ly thôi thì vấn đề đã khác đi rồi...
-------------------------------
Tôi nghĩ phải trùng cả 4 cột mới dc xem là trùng chứ nhỉ... Vì giã sử trùng cột ITEM và ORDER.. nhưng Q'TY và FREI khác nhau... vậy khi lọc sang bảng 3... ngay cột Q'TY và FREI ta sẽ lấy theo em nào của bảng gốc đây... Bạn chứ ý dòng thứ tự 4 và thứ tự 10 trong bảng 1... Nếu xem 2 em này là trùng, tức là ta sẽ lấy 1 đễ trích sang bảng 3... vậy cột Q'TY của bảng 3 ta lấy món nào...
Giờ tốt nhất là như vầy... Tôi gữi dử liệu mà tôi đang giã lập... Bạn cứ theo file này và trích bằng tay cho tôi xem thử...
 

File đính kèm

Lần chỉnh sửa cuối:
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Cảm ơn sự hướng dẫn của Bác.
Theo bài trên thì không trung nghĩa là cả 2 cột "item" và "order" trên cùng một hàng không trùng là được.
Bác xem file cho rõ ràng nha!
 

File đính kèm

Xem như 2 cột ITEM và ORDER đã giãi quyết xong... Giờ vướng 1 cái khác.. khi trich sang bảng 3 thì cột Q'TY và FREI sẽ lấy theo em trên hay dưới? Tức 2 em trùng này thì Q'TY sẽ lấy số 1000 hay 2000? Và cột FREI sẽ lấy A hay B (lấy sang bảng 3 ấy)
 
Bác cứ lấy theo tên dưới dùm em nha
 
Tự động cập nhật dữ liệu Trả Lời Ðề Tài

Bác cho em hỏi tí luôn
Em đã áp dụng theo cách Bác chỉ dẫn là liệt kê nhưng không cần cột phu.
Nhưng tốc độ máy chậm hẳn. Vì Bang "DS" khoảng 5000 dòng.
VB Bác viết thì em chưa hiểu nên chưa áp dụng được.
Bác xem có cách nào help me!
Best regards
 

File đính kèm

Tôi đã làm dc tới chổ Update thông tin mới của 2 cột ITEM và ORDER... (lọc ra danh sách duy nhất sang bảng 3)... Giờ ko biết làm sao đễ lấy luôn 2 cột Q'TY và FREI sang bảng thứ 3
Theo như bạn ALOAN nói thì nếu gặp dử liệu trùng, sẽ lấy cái nằm dưới cùng... Trong file B6 và B12 trùng, sẽ lấy Q'TY là 2000 và FREI là B
Tới đây mà làm bằng công thức thì cũng ko có vấn đề.. nhưng đang làm bằng VBA, tự dưng chèn công thức vào thấy vô duyên quá
Nhờ các cao thủ tiếp tay cho!
Mến
ANH TUẤN
 

File đính kèm

Tôi đã hoàn tất yêu cầu của bạn bằng vòng lập FOR, khác hoàn toàn thuật toán của bài trước... Bạn tải file về xem thử nha! Bất cứ lúc nào bạn nhập liệu vào Bảng 1 và Bảng 2 thì dử liệu so dc so sánh và cập nhật vào bảng 3... Theo như bạn nói thì dử liệu bảng 1 và 2 là hoàn toàn khác nhau, nên bạn cũng phải đãm bảo dc sự khác nhau này (code chỉ phân biệt dử liệu trùng trong 1 bảng)
-------------------------------------------------------
Nhở các cao thủ xem thử thuật toán trong file có gì ko ổn:
PHP:
Private Sub WorkSheet_Change(ByVal Target As Range)
Dim Er1 As Integer, Er2 As Integer
Dim M1 As Integer, M2 As Integer, n As Integer
Application.ScreenUpdating = False
    If Not Intersect(Range("B3:E10000", "H3:K10000"), Target) Is Nothing Then
       Er1 = Range("B10000").End(xlUp).Row
       Er2 = Range("H10000").End(xlUp).Row
       Range("M3:Q10000").ClearContents
       For i1 = 3 To Er1
          For j1 = i1 + 1 To Er1 + 1
              M1 = 0
              If Cells(i1, 2).Value = Cells(j1, 2).Value And Cells(i1, 3).Value = Cells(j1, 3).Value Then
                 Exit For
              Else: M1 = 1
              End If
          Next j1
          If M1 = 1 Then
             n = n + 1
             Range(Cells(n + 2, 14), Cells(n + 2, 17)).Value = Range(Cells(i1, 2), Cells(i1, 5)).Value
             Cells(n + 2, 13).Value = n
          End If
       Next i1
       For i2 = 3 To Er2
          For j2 = i2 + 1 To Er2 + 1
              M2 = 0
              If Cells(i2, 8).Value = Cells(j2, 8).Value And Cells(i2, 9).Value = Cells(j2, 9).Value Then
                 Exit For
              Else: M2 = 1
              End If
          Next j2
          If M2 = 1 Then
             n = n + 1
             Range(Cells(n + 2, 14), Cells(n + 2, 17)).Value = Range(Cells(i2, 8), Cells(i2, 11)).Value
             Cells(n + 2, 13).Value = n
          End If
       Next i2
    End If
End Sub
Ở đây phát hiện dc nhược điểm là: ko thể Undo nếu nhập sai (phải tự sửa bằng tay)... Làm sao khắc phục dc nhược điểm này?
Mến
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Chào Bác anhtuan1066 bác làm hay lắm. Nhưng bác tuấn này, bác có thể để 3 bảng nằm trên 3 sheet khác nhau được không. Thanks
 
Lần chỉnh sửa cuối:
TigerTiger đã sửa lại và thay đổi thuật toán nhanh hơn, có thể dò tìm xét trùng của cả 2 bảng (có file gửi kèm)


Vì đang bận wa, hy vọng có thời gian quay lại bàn luận thêm

@atuan...: a làm khá hay, nhưng còn hạn chế đó là phải dò tìm nhiều (vì phải dò tìm lại cả nx dòng (Item, Order) mà đã trùng với dòng dò tìm trước đó, hy vọng a xem cách của tigertiger và góp ý _tigeriger sẽ quay lại mạn đàm

xin cám ơn, và mong nhận được góp ý

PHP:
Option Explicit

Private Sub WorkSheet_Change(ByVal Target As Range)
  If Not Intersect(Range("B3:E10000", "H3:K10000"), Target) Is Nothing Then
      Application.ScreenUpdating = False
      UpdateB3
  End If
End Sub

Private Sub UpdateB3()
       Dim N1 As Integer, N2 As Integer, N As Integer, i As Integer, j As Integer, k As Integer, i3 As Integer, Dem As Integer
       Dim Rgn1 As Range, Rgn2 As Range, aCo() As Byte: Dim Item_i, Order_i, Item_j, Order_j
       
       Range("M3", Range("Q10000").End(xlUp).Address).ClearContents
       N1 = Range("B10000").End(xlUp).Row - 3 + 1: N2 = Range("H10000").End(xlUp).Row - 3 + 1: N = N1 + N2
       ReDim aCo(N): For i = 1 To N: aCo(i) = 0: Next i  
       
       Set Rgn1 = Range("A3", Range("A3").Offset(N1 - 1, 4).Address)
       Set Rgn2 = Range("G3", Range("G3").Offset(N2 - 1, 4).Address)
   
       i3 = 0: Dem = 0
       For i = 1 To N
        If aCo(i) = 0 Then
          aCo(i) = 1: k = i: Dem = Dem + 1
          If i <= N1 Then
                Item_i = Rgn1(i, 2): Order_i = Rgn1(i, 3)
          Else: Item_i = Rgn2(i - N1, 2):   Order_i = Rgn2(i - N1, 3): End If
          
          For j = i + 1 To N
            If aCo(j) = 0 Then
                If j <= N1 Then
                        Item_j = Rgn1(j, 2):        Order_j = Rgn1(j, 3)
                Else:   Item_j = Rgn2(j - N1, 2):    Order_j = Rgn2(j - N1, 3): End If
                If Item_i = Item_j And Order_i = Order_j Then: aCo(j) = 1: k = j: Dem = Dem + 1
            End If
          Next j
          
          i3 = i3 + 1: Range("M3").Offset(i3 - 1, 0).Value = i3
          With Range(Range("M3").Offset(i3 - 1, 1).Address, Range("M3").Offset(i3 - 1, 4).Address)
            If k <= N1 Then
                    .Value = Range(Rgn1(k, 2).Address, Rgn1(k, 5).Address).Value
            Else:   .Value = Range(Rgn2(k - N1, 2).Address, Rgn2(k - N1, 5).Address).Value: End If
          End With
        End If
        If Dem = N Then Exit For
       Next i
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Duong gia đã viết:
Chào Bác anhtuan1066 bác làm hay lắm. Nhưng bác tuấn này, bác có thể để 3 bảng nằm trên 3 sheet khác nhau được không. Thanks

Ok, với bài trên - Duong gia chỉ cần thay đổi địa chỉ tham chiếu như của các Rgn1, Rgn2,.... bạn thử sửa xem
 
Tôi cũng lại có 1 cách mới, giúp rút ngắn code đấy! Các bạn xem thử và góp ý giùm:
PHP:
Private Sub WorkSheet_Change(ByVal Target As Range)
Dim Er1 As Integer, Er2 As Integer, Rw As Integer
Dim M1 As Integer, M2 As Integer, n As Integer, K As Integer
Application.ScreenUpdating = False
    If Not Intersect(Range("B3:E10000", "H3:K10000"), Target) Is Nothing Then
       Er1 = Range("B10000").End(xlUp).Row
       Er2 = Range("H10000").End(xlUp).Row
       Range("M3:Q10000").ClearContents
For i = 1 To 2
     If i = 1 Then
           Rw = Er1
     Else: Rw = Er2
     End If
     K = 2 + (i - 1) * 6
       For i1 = 3 To Rw
          For j1 = i1 + 1 To Rw + 1
              M1 = 0
              If Cells(i1, K).Value = Cells(j1, K).Value And Cells(i1, K + 1).Value = Cells(j1, K + 1).Value Then
                 Exit For
              Else: M1 = 1
              End If
          Next j1
          If M1 = 1 Then
             n = n + 1
             Range(Cells(n + 2, 14), Cells(n + 2, 17)).Value = Range(Cells(i1, K), Cells(i1, K + 3)).Value
             Cells(n + 2, 13).Value = n
          End If
       Next i1
Next i
End If
End Sub
ANH TUẤN
 
Duong gia đã viết:
Chào Bác anhtuan1066 bác làm hay lắm. Nhưng bác tuấn này, bác có thể để 3 bảng nằm trên 3 sheet khác nhau được không. Thanks
Như yêu cầu của bạn thì trong code mới của tôi bạn chỉ cần thay chổ này:
Mã:
[COLOR=red]Range(Cells(n + 2, 14), Cells(n + 2, 17)).Value[/COLOR][COLOR=#0000bb] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]i1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]K[/COLOR][COLOR=#007700]), [/COLOR][COLOR=#0000bb]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]i1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]K [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700])).[/COLOR][COLOR=#0000bb]Value
             [/COLOR][COLOR=red]Cells(n + 2, 13).Value[/COLOR][COLOR=#0000bb] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]n[/COLOR]
Thành địa chỉ cell nào đó tùy ý (ngay chổ tô màu đỏ)

 
Cập nhật dữ liệu thèo ngày.

Thấy mọi người bàn sôi nổi về vấn đề tự động cập nhật data, mình cũng có 1 bài toán làm không ra. Mong mọi người giúp đở.

Thực ra đây là 1 file để cho nhân viên Bán vé nhập dữ liệu vào. File sẽ được định dạng trước, đơn giản không có công thức gì cả. Nhân viên chỉ mở lên và nhập dữ liệu của ngày hiện tại.
Nhưng vì thị trường luôn thay đổi, nên mình phải luôn ngồi sữa lại cho khớp với thị trường. Mà rất nhìu file, 1 file lại rất nhìu dòng.

Mục đích của mình là tạo thêm 1 Sheet Data có các cột phụ , chứa các thông số hay thay đổi như: Số ghế, Trước ngày bay, Lịch bay.

Và khi mình thay đổi thông số bên Sheet Data thì Sheet Baocao sẽ tự động cập nhật. Mình ko cần phải ngồi sữa từng cái như trước đây nữa.

Mình ko bít giải thích như vậy mọi người có rõ không. Cám ơn mọi người đã nhiệt tình góp ý.
Mình xin gửi file thực để mọi người dể nhìn.

Chân thành cám ơn các Bác.
 

File đính kèm

To Mr. AnhTuan1066, Với đoạn sau trong file: "UPDATED data_Tuan03" của Bác, mình phải sửa chỗ nào để nó trích dữ liệu sang cột A của sheet 2 . Thanks Private Sub WorkSheet_Change(ByVal target As Range) If Not Intersect(target, Range("B2:B1000")) Is Nothing Then Rw = ActiveCell.Row Range("B1:B1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "G1"), Unique:=True Range("G2:G1000").Select Selection.Sort Key1:=Range("G2"), Order1:=xlAscending Range("B" & Rw).Select End If End Sub
 
Lần chỉnh sửa cuối:
Chào bạn Duong Gia! Với yêu cầu của bạn, theo tôi cách chắc ăn nhất là bạn chia code này thành 2 phần: 1 cái nằm trong module và 1 cái nằm trong Sheet... Cụ thể như sau:
Code trong Sheet:
PHP:
Private Sub WorkSheet_Change(ByVal target As Range)
     If Not Intersect(target, Range("Sheet1!B2:B1000")) Is Nothing Then
        Call LOC
     End If
End Sub
Và code trong module:
PHP:
Sub LOC()
    Rw = ActiveCell.Row
    Sheets("Sheet1").Range("B2:B1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("Sheet2").Range("A2"), Unique:=True
    Sheets("Sheet2").Select
    ActiveSheet.Range("A3:A1000").Select
    Selection.Sort Key1:=Range("A3"), Order1:=xlAscending
    Sheets("Sheet1").Select
    Range("B" & Rw).Select
End Sub
Mọi sự thay đổi dử liệu trong vùng d/k của Sheet1 sẽ dc chuyển đến Run Sub LOC
Mến
ANH TUẤN
 
Lần chỉnh sửa cuối:
To Mr. anhtuan1066 Bác Tuấn help me lọc dữ liệu theo ĐK. Pls open file đính kèm. Thanks +-+-+-+
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem bài này của tôi đã làm sẳn rồi tự chế theo ý mình nhé...
Tôi nghĩ file của tôi rất giống với yêu cầu của bạn... Tất cả nhiệm vụ còn lại của bạn là mở code ra và thay thế địa chỉ cell cho phù hợp với thực tế file mình
(Nếu dử liêu của bạn ko nhiều, dưới 1000, thì nên dùng công thức)
Mến
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Hic... thôi làm luôn cho bạn... Trang trí lại bảng tính nhé...
Bạn mở code ra xem.. gần như giống đến 90% code file trên của tôi đấy
Còn trục trặc gì chắc bạn tự sửa dc nhỉ
ANH TUẤN
 

File đính kèm

Em có góp ý thế này :

Chúng ta không nên lạm dụng sự kiện WorkSheets_Change, vì mỗi lần thay đổi trong vùng đã định lại chạy sub này thì . . quá mệt.

Em đề nghị :

- Dùng sự kiện WorkSheet_Change : Khi có sự thay đổi sẽ ghi là "DATHAYDOI" vào trong 1Cell nào đó
- Khi Sheet 2 (Sheet Đích) được Active (Worksheet_Active) thì sẽ kiểm tra xem Cell trên có ghi "DATHAYDOI" không ?? Nếu có sẽ tiến hành chạy Sub LOC, và xóa Cell tạm ở trên.

Thân!
 
anhtuan1066 đã viết:
Hic... thôi làm luôn cho bạn... Trang trí lại bảng tính nhé... Bạn mở code ra xem.. gần như giống đến 90% code file trên của tôi đấy Còn trục trặc gì chắc bạn tự sửa dc nhỉ ANH TUẤN
Cám ơn Bác Anhtuan1066, hay lắm, đúng y/c của mình rồi. Từ lúc post lên hỏi đến giờ cứ 10 hay 15 phút là mình check 1 lần, mình trông ttin của Bác quá. Không biết bác đang làm việc ở SG hay Hà Nội vậy? Giá như trên GPE này mình truy cập vào mà biết được ttin của mọi người nhỉ (ttin là làm đang làm việc ở miền nào, tỉnh, Tp nào đó mà) Thôi thanks bác rất nhiều.
 
Lần chỉnh sửa cuối:
Hi anh Tuan,

Cái file 1 của bác tuy là dùng cột phụ, nhưng về mặc logic nó tốt hơn
Vì sao: Vì khi thêm mã hàng mới mà cứ xuống dòng, khi trở lên dòng trên xóa mã hàng đó đi, thì bên phần LIETKE tự động dồn dòng lên, còn nếu làm như vậy bên file 2 thì LIETKE sẽ là trắng toàn bộ, Vì file 2 nó là mảng, nên ảnh hưởng hết toàn range :)
File 3 của bác thì oke

Cám ơn bác nhiều
 
Lần chỉnh sửa cuối:
Tôi đã hoàn thiện bài toán tự động cập nhật dử liệu từ bảng 1 và 2 sang bảng 3 theo gợi ý của tigertiger
PHP:
Private Sub WorkSheet_Change(ByVal Target As Range)
Dim Er1 As Integer, Er2 As Integer, M1 As Integer
Dim Ci1 As Integer, Ci2 As Integer
Dim Ri1 As Integer, Ri2 As Integer
Application.ScreenUpdating = False
    If Not Intersect(Range("B3:E10000", "H3:K10000"), Target) Is Nothing Then
       Er1 = Range("B10000").End(xlUp).Row
       Er2 = Range("H10000").End(xlUp).Row
       Range("M3:Q10000").ClearContents
       For i = 1 To Er1 + Er2 - 4
          If i <= Er1 - 2 Then
                Ri1 = i
                Ci1 = 2
          Else: Ri1 = i - Er1 + 2
                Ci1 = 8
          End If
          For j = i + 1 To Er1 + Er2 - 3
              If j <= Er1 - 2 Then
                    Ri2 = j
                    Ci2 = 2
              Else: Ri2 = j - Er1 + 2
                    Ci2 = 8
              End If
              M1 = 0
              If Cells(Ri1 + 2, Ci1).Value = Cells(Ri2 + 2, Ci2).Value And Cells(Ri1 + 2, Ci1 + 1).Value = Cells(Ri2 + 2, Ci2 + 1).Value Then
                 Exit For
              Else: M1 = 1
              End If
          Next j
          If M1 = 1 Then
             n = n + 1
             Range(Cells(n + 2, 14), Cells(n + 2, 17)).Value = Range(Cells(Ri1 + 2, Ci1), Cells(Ri1 + 2, Ci1 + 3)).Value
             Cells(n + 2, 13).Value = n
          End If
       Next i
    End If
End Sub
Nhờ các bạn xem giúp còn chổ nào ko ổn ko?
Mến
ANH TUẤN
 

File đính kèm

Nhờ các anh chị chỉ giúp.

Giả sử em có file như trên, đính kèm. Nhờ các anh chị chỉ giúp.
Bảng dữ liệu thì nằm trên Sheet1, em muốn lọc ra những chiếc xe hoặc đếm tất cả trong ngày đó có bao nhiêu chiếc xe chạy, mỗi xe chạy chở những gì. Em có ghi chú thích bên Sheet 2. Mong các anh chị chỉ giúp.
 

File đính kèm

Lần chỉnh sửa cuối:
chào cả nhà tôi là Tuanlichviet là thành viên mới tôi đã xem bài của các bạn rất lấy làm thích dặc biệt là bài tu động cập nhật dữ liệu từ bảng 1 và bảng 2 vào bảng 3 thực sự bài viết này rất có ý nghĩa với tôi trong công việc vì vậy tôi mong các bạn giúp tôi có thể di chuyển bảng 1 vào Sheet 1 và bảng 2 vào Sheet2 khi ta nhập liệu từ SH1 và Sh2 nó tự động vào Sheet 3 có được không ? Liệu có thể dùng Sh1 , Sh2, Sh3, Sh4, Sh5, Sh6 khi ta nhập liệu nó tự động cập nhật vào 1 Sh7 = Sheet Tổng hợp từ 6 Sheet trên được không? với công việc này tôi thường ngày phải sử dụng lệnh Copy ịvà Paste LinK việc này rất khổ cảm ơn các bạn tôi chờ bài của các bạn..
 
Giả sử em có file như trên, đính kèm. Nhờ các anh chị chỉ giúp.
Bảng dữ liệu thì nằm trên Sheet1, em muốn lọc ra những chiếc xe hoặc đếm tất cả trong ngày đó có bao nhiêu chiếc xe chạy, mỗi xe chạy chở những gì. Em có ghi chú thích bên Sheet 2. Mong các anh chị chỉ giúp.
Bạn dùng AutoFilter đi cho gọn... Filter xong thì copy/paste qua sheet2
Nếu muốn tự động (dùng code) cũng sẽ dựa trên cơ sở này mà làm (khá dể)
 

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

Back
Top Bottom