Cập nhật dữ liệu không có từ một File khác.

Liên hệ QC
Copy code này vào chạy thử
PHP:
Sub abc()
Dim Arr(), i, j, k, chk
chk = Application.FindFile
If chk = False Then End
With ActiveWorkbook.ActiveSheet
   Arr = .Range("A2", .[M65536].End(3)).Value
   .Parent.Close False
End With
With Sheet1
   .[A65536].End(3)(2).Resize(UBound(Arr), 13) = Arr
   .[a1].CurrentRegion.RemoveDuplicates 4, 1
   .Range("A2", .[A65536].End(3)) = [row(a:a)]
End With
End Sub
.parent
Lại thêm từ khoá CHA MẸ học anh Hải, rất sáng tạo.
 
Anh có lòng giúp thì giúp hoàn thiện đoạn code, chứ người mới học như tôi e là càng đọc thì càng như di vào rừng rậm.

Tình thực mà nói, tôi không "có lòng", nhất là cái vụ hoàn thiện code.
Tôi có hỏi mục đích của bạn là chỗ nào mà bạn không thèm trả lời.
Lý do tôi hỏi là vì ADO chỉ nên dùng trong tình huống đặc thù của trường hợp. Nếu có thể dùng cách khác thì không nên dùng ADO.

Đối với tôi, "người mới học" chỉ nên làm những cái gì đơn giản, ham hố đi vào những cái rườm rà không cần thiết chỉ tổ mắc nghẹn.
Nếu tôi chỉ dẫn cách thiết lập câu sql rồi mà không biết viết code thì tôt hơn hết đừng nên chạm vào ADO.
 
Tình thực mà nói, tôi không "có lòng", nhất là cái vụ hoàn thiện code.
Tôi có hỏi mục đích của bạn là chỗ nào mà bạn không thèm trả lời.
Lý do tôi hỏi là vì ADO chỉ nên dùng trong tình huống đặc thù của trường hợp. Nếu có thể dùng cách khác thì không nên dùng ADO.

Đối với tôi, "người mới học" chỉ nên làm những cái gì đơn giản, ham hố đi vào những cái rườm rà không cần thiết chỉ tổ mắc nghẹn.
Nếu tôi chỉ dẫn cách thiết lập câu sql rồi mà không biết viết code thì tôt hơn hết đừng nên chạm vào ADO.
Chỉ là học hỏi thêm thôi anh. Ý anh hỏi tại sao ko muốn mở file B? Vì e nghĩ đơn giản là file B mà nặng mở mất thời gian, đơn giản chỉ là việc lưu tạm ở bộ nhớ rồi giải phóng luôn sẽ nhanh hơn.
@

a quanghai: code anh chạy nuột lắm ạ. Cảm ơn anh!
a Hau151978: code chạy tốt ạ, mà nhìn choáng váng quá, chắc phải theo lới khuyên của anh vetmini thôi.
 
Do file B có nhiều record trùng mà lại chỉ lọc duy nhất CMND (có thể địa chỉ sai lệch chẳng hạn) nên SQL đơn thuần chắc khó. Vì vậy mới duyệt từng record hoặc dùng remove duplicate. Nếu record không trùng thì ngắn gọn hơn nhiều.
 
@Hau151978:
1. Lệnh union tự động loại bỏ records trùng.
2. Tuy IN có thể coi như tương đương với EXISTS (không tính đến tốc độ). Nhưng NOT IN không hẳn ra kết quả giống NOT EXISTS. Thông thường thì nên tránh dùng Not In vì nó sẽ dừng search nếu gặp Null. Người ta chỉ dùng Not In khi biết chắc trong nhóm records không có null. (Gu gô từ khoá sql where not in sẽ thấy người ta bàn về vấn đề này)
 
@Hau151978:
1. Lệnh union tự động loại bỏ records trùng.
Union chỉ loại trùng toàn bộ record, ở đây em ví dụ cùng CMND, cùng họ tên nhưng địa chỉ khác nhau 1 ký tự thôi sẽ bị tính thành 2 trong khi mục tiêu là chỉ lọc theo trường CMND thôi.
2. Khi em dùng Not In nếu dưới cùng bảng A đang có dữ liệu cần xóa dùng lệnh clearcontents thì không select được, dùng delete rows thì xóa được, không biết có phải do not in không bác?
 
Lần chỉnh sửa cuối:
Tôi đang bận, 1 vài hôm nữa giải quyết triệt để cho anh bài này nhé. --=0
 
Union chỉ loại trùng toàn bộ record, ở đây em ví dụ cùng CMND, cùng họ tên nhưng địa chỉ khác nhau 1 ký tự thôi sẽ bị tính thành 2 trong khi mục tiêu là chỉ lọc theo trường CMND thôi.
2. Khi em dùng Not In nếu dưới cùng bảng A đang có dữ liệu cần xóa dùng lệnh clearcontents thì không select được, dùng delete rows thì xóa được, không biết có phải do not in không bác?

1. Tôi từ chối nói chuyện tiếp về 1 key, nhiều records. Tôi không thích làm việc với loại dữ liệu không thống nhất.

2. Cái vụ "Not In" là chung cho cách hoạt động của sql. Đây là lệnh truy vấn, không liên quan gì đến Excel cả.
 
Thừa 1 người cha thì phải? Cha của a1 là sheetname? Cha của sheetname là file name? Cha của filename là excel?

Có thể đến cấp "đầu tiên" thì thuộc tính này không đổi, tức là cha của "ông tổ" là "ông tổ". Còn "ông tổ" thực sự ở cấp nào thì do office quy định .

Có lẽ đợi anh PhanTuHuong.
 
Tôi làm xem bạn có thấy đúng ý không, làm hơi vội do bận --=0? Nếu cần trao đổi cụ thể hơn thì gặp mặt cafe ở Tô Hiệu - Cầu Giấy (tôi thường xuyên ngồi ở đó)
Nếu dữ liệu nhiều thì tối ưu và tăng tốc code sau.
 

File đính kèm

  • Update.rar
    33.9 KB · Đọc: 34
Web KT
Back
Top Bottom