Nhờ anh chị viết Code thay thế code Xlookup

Chia sẻ bởi:hands
★★★★★
Quảng cáo

1. File copy sang máy khác hàm Xlookup không chạy được
2. Hàm load hơi nặng
Do vậy nhờ anh chị viết giúp Code tự đông lấy dữ liệu từ 02 sheet vào 1 Sheet
Vậy nhờ anh chị hỗ trợ viết giúp Code để thay Code Xlookup

Mình vòng vo 1 chút, bạn kiểm trong file, sau khi thấy dữ liệu OK ta tiếp tục xíu nữa!

Dạ em cám ơn anh nhiều thực ra Code Arr em không hiểu nên không biết gán kết quả.

Copy cái ni & chép đè lên macro cũ & kiểm lại lần chót, nha!

Sub TongHopDuLieu()
Dim Rws As Long, J As Long, W As Long, Tmr As Double, jJ As Long
Dim Arr()

Sheets("DuLieu").Select
Rws = .CurrentRegion.Rows.Count: Tmr = Timer()
Arr() = .Resize(Rws, 4).Value: ReDim aKQ(1 To Rws, 1 To 7)

For J = 1 To UBound(Arr())
W = W + 1: aKQ(W, 1) = W
aKQ(W, 2) = Arr(J, 2): aKQ(W, 4) = Arr(J, 4)
aKQ(W, 7) = Arr(J, 1)
Next J
Sheets("TB_GSHT").Select: W = 0
Rws = .CurrentRegion.Rows.Count
Arr() = .Resize(Rws, 6).Value
ReDim aRes(1 To UBound(Arr()), 1 To 3)
For J = 1 To UBound(aKQ()) 'Bien Kiêm Soát (2) '
W = W + 1
For jJ = 1 To UBound(Arr())
If aKQ(J, 2) = Arr(jJ, 1) Then
aKQ(J, 3) = Arr(jJ, 3): aKQ(J, 5) = Arr(jJ, 5)
aKQ(J, 6) = Arr(jJ, 6)
Exit For
End If
Next jJ
Next J
With Sheets("Data")
..Resize(2 * W, 7).Value = ""
..Resize(W, 7).Value = aKQ()
..End(xlUp).Offset(1).Value = Timer() – Tmr
.Select
End With
End Sub

Em chân thành cám ơn anh nhiều Code chạy rất nhanh và chính xác

Mục 2 này cũng có thể do thiết kế trang tính của bạn chưa tối ưu; Mình xin vài ví dụ sau:

(1) Tại trang 'DuLieu' có 1 cột/trường hoàn toàn chỉ 1 thông tin duy nhất (cột C); Theo mình cột này có cách bớt đi

(1.1) Cũng ở trang này bạn có trường 'Phù Hiệu' chứa tên các loại phương tiện;
Nếu là mình thì mình sẽ đưa vô danh mục gồm mã PH như ví dụ trong bảng dưới đây:


Phù hiệu

HD_
Xe Hợp đồng

339

Tax
Xe Taxi

390

Tai
Xe Tải

1752

DK_
Xe Đầu kéo

450

Con
Xe Container

100

CD_
Xe chạy tuyến cố định

246

Byt
Xe Buýt

25

XTC
Xe Trung chuyển

1

XDL
Xe Du lịch

53

Làm vậy sẽ gọn gàng lại CSDL của bạn (bằng cách xài mã của danh mục thay vì tên danh mục)
Tương tự như vậy với trường 'Hiệu lực' ta nên xài 'Yes/No'
(2.) Bạn xài tên quá dài; Người ta có thể viết tắc các cụm từ thông dụng như CTi (thay cho 'Công ty'; TNHH thay cho 'Trách nhiệm hữu hạn',. . . . . . .
Nếu bạn chịu khó thêm thì file sẽ nhẹ & mượt thêm hơn!

& chúc vui nha!

Dạ không anh ạ (1) 02 Sheet gồm "Dulieu" và "TB_GSHT" là xuất từ phần mềm ra, nên em để nguyên định dạng file đó anh
(2)Nhờ bác xem tiếp giúp em dùng hàm Xlookop và Vlookup đối sánh thấy dữ liệu có khác

Người viết phần mềm đã chưa chú í đến vì 1 hay vài lý do nào đó , thì bạn cứ để vậy ư?
Cái tối thiểu mà bạn có thể làm ngay là:
(1) Cụm từ "Sở Giao thông Vận tải Quảng Bình" bạn có thể thay ngày & toàn bộ bỡi 'SGT QB'
(Thử ngay đi xem file giảm được bao nhiêu K!)
(1.1) Thay thử tiếp 'Yes/No' xem giảm bao nhiêu.
(1.2) Thay thử Mã PH cho 'Phù hiệu', . . . . .
[Chắc bạn dư khả năng tạo ra macro này chứ nhỉ,. . . .?]

(2) Cần gì phải Vlookup() hay XLooKup(); Cứ phương thức FIND() cũng thấy ngay kết quả & tự trả lời rồi, rõ chán!

www.giaiphapexcel.com/diendan/threads/nh%E1%BB%9D-anh-ch%E1%BB%8B-vi%E1%BA%BFt-code-thay-th%E1%BA%BF-code-xlookup.163622/post-1091367

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm