Dữ liệu chạy máy theo từng nhân viên. Nhưng trong quá trình sử dụng, máy được thay đổi chạy nhiều lần, và bạn cần tìm ra máy đã thay đổi cuối cùng đó.
Ví dụ:- Máy 6 đã được thay đổi thành Máy 10, rồi từ 10 lại thành 13, và cuối cùng Máy 13 được đổi thành Máy 20. Nên kết quả cuối cùng của Máy 6 sẽ thành Máy 20.
- Những máy không có sự thay đổi, sẽ được giữ nguyên.
Link: Onedrive
![]() |
| Tìm máy cuối cùng sau những thay đổi |
Công thức:
1.=LET(f,LAMBDA(f,x,LET(a,IFNA(VLOOKUP(x,D2:E8,2,),x),IF(AND(x=a),a,f(f,a)))),f(f,B2:B20))
2.=REDUCE(B2:B20,E2:E8,LAMBDA(x,v,IF(x=@+D8:v,v,x)))
3.=REDUCE(B2:B20,ROW(1:9),LAMBDA(x,v,IFNA(XLOOKUP(x,D2:D8,E2:E8),x)))
4.Python
k = xl("D1:E8",1)
i = dict(zip(k["Trước"],k["Sau"]))
def f(v):
while v in i:
v = i[v]
return v
xl("B1:B20",1)["Máy"].apply(f)
1.=LET(f,LAMBDA(f,x,LET(a,IFNA(VLOOKUP(x,D2:E8,2,),x),IF(AND(x=a),a,f(f,a)))),f(f,B2:B20))
2.=REDUCE(B2:B20,E2:E8,LAMBDA(x,v,IF(x=@+D8:v,v,x)))
3.=REDUCE(B2:B20,ROW(1:9),LAMBDA(x,v,IFNA(XLOOKUP(x,D2:D8,E2:E8),x)))
4.Python
k = xl("D1:E8",1)
i = dict(zip(k["Trước"],k["Sau"]))
def f(v):
while v in i:
v = i[v]
return v
xl("B1:B20",1)["Máy"].apply(f)
