Xin code VBA để lấy kỳ sản xuất từ dữ liệu ngày

Liên hệ QC

phuoc0z

Thành viên mới
Tham gia
29/7/21
Bài viết
17
Được thích
0
Em chào anh chị, hiện tại em có 1 file xử lí số liệu, do tính chất nên phải xử lí rất nhiều dòng (>2000 dòng), ở sheet Data CT cột M, N là 2 cột để em trích ra kỳ KPI, đối chiếu từ cột "Thời gian", dữ liệu để so sánh nằm trong sheet Kỳ SX, hiện tại em đang dùng hàm thủ công nhưng cứ mỗi lần cập nhật dữ liệu là lại bị rất chậm nên em muốn nhờ anh chị giúp cho.
Hàm hiện tại của em là: =IFERROR(IF(OR([@[Thời gian]]<INDEX('Kỳ SX'!$C$3:$C$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0));[@[Thời gian]]>INDEX('Kỳ SX'!$D$3:$D$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0)));"";[@Tháng]);"").

Trong file em có giải thích cụ thể vấn đề, em cám ơn anh chị
 

File đính kèm

  • Dữ liệu mẫu.xlsm
    412.2 KB · Đọc: 13
Em chào anh chị, hiện tại em có 1 file xử lí số liệu, do tính chất nên phải xử lí rất nhiều dòng (>2000 dòng), ở sheet Data CT cột M, N là 2 cột để em trích ra kỳ KPI, đối chiếu từ cột "Thời gian", dữ liệu để so sánh nằm trong sheet Kỳ SX, hiện tại em đang dùng hàm thủ công nhưng cứ mỗi lần cập nhật dữ liệu là lại bị rất chậm nên em muốn nhờ anh chị giúp cho.
Hàm hiện tại của em là: =IFERROR(IF(OR([@[Thời gian]]<INDEX('Kỳ SX'!$C$3:$C$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0));[@[Thời gian]]>INDEX('Kỳ SX'!$D$3:$D$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0)));"";[@Tháng]);"").

Trong file em có giải thích cụ thể vấn đề, em cám ơn anh chị
M6=IFERROR(LOOKUP("Z",IF(('Kỳ SX'!$C$3:$C$38<=A6)*('Kỳ SX'!$D$3:$D$38>=A6),'Kỳ SX'!$E$3:$E$38)),"")
Ctrl+Shift+Enter
Nó chạy điên đảo mà cũng chẳng cần cột phụ
Nếu bạn cần Code thì chờ các Bác nhé!
 

File đính kèm

  • Dữ liệu mẫu.xlsm
    410.5 KB · Đọc: 9
Em chào anh chị, hiện tại em có 1 file xử lí số liệu, do tính chất nên phải xử lí rất nhiều dòng (>2000 dòng), ở sheet Data CT cột M, N là 2 cột để em trích ra kỳ KPI, đối chiếu từ cột "Thời gian", dữ liệu để so sánh nằm trong sheet Kỳ SX, hiện tại em đang dùng hàm thủ công nhưng cứ mỗi lần cập nhật dữ liệu là lại bị rất chậm nên em muốn nhờ anh chị giúp cho.
Hàm hiện tại của em là: =IFERROR(IF(OR([@[Thời gian]]<INDEX('Kỳ SX'!$C$3:$C$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0));[@[Thời gian]]>INDEX('Kỳ SX'!$D$3:$D$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0)));"";[@Tháng]);"").

Trong file em có giải thích cụ thể vấn đề, em cám ơn anh chị
Mình chưa xem hết, nhưng làm tạm bảng tra để thay cho hàm IF ở hai cột Mã than kho của bạn cho đỡ nặng file đã, bạn xem thử.
 

File đính kèm

  • Dữ liệu mẫu.xlsm
    416.5 KB · Đọc: 10
Em chào anh chị, hiện tại em có 1 file xử lí số liệu, do tính chất nên phải xử lí rất nhiều dòng (>2000 dòng), ở sheet Data CT cột M, N là 2 cột để em trích ra kỳ KPI, đối chiếu từ cột "Thời gian", dữ liệu để so sánh nằm trong sheet Kỳ SX, hiện tại em đang dùng hàm thủ công nhưng cứ mỗi lần cập nhật dữ liệu là lại bị rất chậm nên em muốn nhờ anh chị giúp cho.
Hàm hiện tại của em là: =IFERROR(IF(OR([@[Thời gian]]<INDEX('Kỳ SX'!$C$3:$C$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0));[@[Thời gian]]>INDEX('Kỳ SX'!$D$3:$D$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0)));"";[@Tháng]);"").

Trong file em có giải thích cụ thể vấn đề, em cám ơn anh chị
Cột N luôn bằng cột M rồi còn gì, vấn đề là sửa công thức cột M một chút vì vlookup khớp tương đối sẽ có vấn đề trong một số trường hợp
 
M6=IFERROR(LOOKUP("Z",IF(('Kỳ SX'!$C$3:$C$38<=A6)*('Kỳ SX'!$D$3:$D$38>=A6),'Kỳ SX'!$E$3:$E$38)),"")
Ctrl+Shift+Enter
Nó chạy điên đảo mà cũng chẳng cần cột phụ
Nếu bạn cần Code thì chờ các Bác nhé!
Mình cám ơn bạn, cách của bạn cũng rất là hiệu quả, mình có thử chạy test lại cũng nhanh hơn cũ rồi
Bài đã được tự động gộp:

Mình chưa xem hết, nhưng làm tạm bảng tra để thay cho hàm IF ở hai cột Mã than kho của bạn cho đỡ nặng file đã, bạn xem thử.
Mình cũng cảm thấy if ở mã than kho rất nặng nên có làm 1 code để lấy mã than kho (mình không làm trên file mẫu này) nhưng mà đối với so sánh ngày tháng mình code lỗi rất nhiều có dòng được dòng không nên mình muốn nhờ ai đó hỗ trợ ấy bạn
Bài đã được tự động gộp:

Cột N luôn bằng cột M rồi còn gì, vấn đề là sửa công thức cột M một chút vì vlookup khớp tương đối sẽ có vấn đề trong một số trường hợp
Mình cũng bị lỗi liên tục ở đó á bạn nhất là những kì có 2 năm lại rất hay bị lệch
 
Em chào anh chị, hiện tại em có 1 file xử lí số liệu, do tính chất nên phải xử lí rất nhiều dòng (>2000 dòng), ở sheet Data CT cột M, N là 2 cột để em trích ra kỳ KPI, đối chiếu từ cột "Thời gian", dữ liệu để so sánh nằm trong sheet Kỳ SX, hiện tại em đang dùng hàm thủ công nhưng cứ mỗi lần cập nhật dữ liệu là lại bị rất chậm nên em muốn nhờ anh chị giúp cho.
Hàm hiện tại của em là: =IFERROR(IF(OR([@[Thời gian]]<INDEX('Kỳ SX'!$C$3:$C$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0));[@[Thời gian]]>INDEX('Kỳ SX'!$D$3:$D$38;MATCH([@Tháng];'Kỳ SX'!$E$3:$E$38;0)));"";[@Tháng]);"").

Trong file em có giải thích cụ thể vấn đề, em cám ơn anh chị
Muốn nhẹ file không nên dùng Table
Công thức sheet "3. Data CT"
Mã:
E6 =INDEX({"","100010001","100010002","100010003","100010004","100010014","100010015","100010006","100010016","100010017","100010008","100010009",""},MATCH(D6,{0,3500,3701,4101,4301,4601,4801,5001,5201,5401,5501,5701,5801}))
Copy xuống, copy cho cột H
Mã:
N6 =IFERROR(LOOKUP(2,1/($A6>='Kỳ SX'!$C$3:$C$38)/($A6<='Kỳ SX'!$D$3:$D$38),'Kỳ SX'!$E$3:$E$38),"")
Copy xuống
 

File đính kèm

  • Dữ liệu mẫu.xlsm
    448.4 KB · Đọc: 10
Web KT
Back
Top Bottom