Xin anh chị công thức tại C2 hoặc code VBA để lọc lại những vị trí chưa được xuất tại B2 (2 người xem)

Liên hệ QC

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

bogianui

Thành viên mới
Tham gia
14/4/17
Bài viết
7
Được thích
2
Chào anh chị . Em cần giúp đỡ lọc lại những vị trí còn tồn . Dữ liệu như sau :
Vị trí nhậpVị trí xuấtVị trí còn lại
A1,A2,A3,A4,A5A3,A5A1,A2,A4

Mong anh chị cho em xin công thức hoặc code VBA để lọc lại những vị trí còn tồn . Em cảm ơn
 

File đính kèm

Trong file cũng y như trình bày ở đây, xem vẫn không hiểu vị trí bạn muốn nói là gì?
 
Công thức hơi rắc rối. Dùng hàm UDF tiện hơn

Function TextPurge(s1 As String, s2 As String) As String
' Purges all elements of string s2 from string s1
' eg: s1 = "A1,A2,A3,A4,A5"; s2 = "A3,A5"; returns = "A1,A2,A4"
Const DELIM = ","
Dim e
TextPurge = DELIM & s1 & DELIM
For Each e In Split(s2, DELIM)
TextPurge = Replace(TextPurge, DELIM & e & DELIM, DELIM)
Next e
If Len(TextPurge) > 2 Then
TextPurge = Mid(TextPurge, 2, Len(TextPurge) - 2)
Else
TextPurge = ""
End If
End Function
 
Công thức hơi rắc rối. Dùng hàm UDF tiện hơn

Function TextPurge(s1 As String, s2 As String) As String
' Purges all elements of string s2 from string s1
' eg: s1 = "A1,A2,A3,A4,A5"; s2 = "A3,A5"; returns = "A1,A2,A4"
Const DELIM = ","
Dim e
TextPurge = DELIM & s1 & DELIM
For Each e In Split(s2, DELIM)
TextPurge = Replace(TextPurge, DELIM & e & DELIM, DELIM)
Next e
If Len(TextPurge) > 2 Then
TextPurge = Mid(TextPurge, 2, Len(TextPurge) - 2)
Else
TextPurge = ""
End If
End Function
Dạ em cảm ơn anh .
 
Chào anh chị . Em cần giúp đỡ lọc lại những vị trí còn tồn . Dữ liệu như sau :
Vị trí nhậpVị trí xuấtVị trí còn lại
A1,A2,A3,A4,A5A3,A5A1,A2,A4

Mong anh chị cho em xin công thức hoặc code VBA để lọc lại những vị trí còn tồn . Em cảm ơn
Thử dùng hàm TEXTJOIN có trong Excel(>=2019)
Mã:
=TEXTJOIN(",",1,IF(NOT(MMULT(N(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",100)),(ROW($1:$30)-1)*100+1,100))=TRANSPOSE(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",100)),(ROW(INDIRECT("1:"&1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))-1)*100+1,100)))),ROW(INDIRECT("1:"&1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))^0)),TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",100)),(ROW($1:$30)-1)*100+1,100)),""))
1608622161301.png
 

File đính kèm

  • 1608622085728.png
    1608622085728.png
    70.7 KB · Đọc: 5
Thử dùng hàm TEXTJOIN có trong Excel(>=2019)
Mã:
=TEXTJOIN(",",1,IF(NOT(MMULT(N(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",100)),(ROW($1:$30)-1)*100+1,100))=TRANSPOSE(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",100)),(ROW(INDIRECT("1:"&1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))-1)*100+1,100)))),ROW(INDIRECT("1:"&1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))^0)),TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",100)),(ROW($1:$30)-1)*100+1,100)),""))
View attachment 251635
Wow , e làm đc rồi . Cảm ơn anh nhiều nha
 
Không có textjoin chơi kiểu nông dân cho dễ hiểu
Mã:
=SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2;",";" ");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*1;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*2;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*3;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*4;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*5;99));""));" ";",")
 

File đính kèm

Không có textjoin chơi kiểu nông dân cho dễ hiểu
Mã:
=SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2;",";" ");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*1;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*2;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*3;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*4;99));"");TRIM(MID(SUBSTITUTE(","&B2;",";REPT(" ";99));99*5;99));""));" ";",")
Em cảm ơn anh/chị nhiều nha
 
Web KT

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

Back
Top Bottom