Nếu bạn làm trong ngành vận tải, hoặc đơn giản là bạn cần di chuyển qua nhiều địa điểm. Bạn sẽ luôn muốn tìm ra cách di chuyển sao cho chi phí tối ưu nhất có thể. Bài toán này mình sẽ hướng dẫn bạn
Bài toán: Bảng dữ liệu gồm chi phí đi lại cho các quãng đường. Cần di chuyển bắt đầu từ A, đi qua các địa điểm và kết thúc tại A. Liệt kê các quãng đường sẽ đi cũng như chi phí của nó để tìm ra được cách đi tối ưu nhất. (Nếu bạn chưa rõ cách tính hãy tham khảo màu 2 vị trí mình có tô tương ứng theo kết quả).
Link: Onedrive
![]() |
| Tối ưu chi phí đi lại giữa các điểm |
Công thức:
1.=LET(a,A2:A6,b,SEQUENCE(,ROWS(a)-1),p,MID(REDUCE("",b,LAMBDA(x,v,TOCOL(IFS(ISERR(FIND(b,x)),x&b),3))),b,1)+1,HSTACK(BYROW(p,LAMBDA(s,CONCAT(@a,INDEX(a,s),@a))),BYROW(p,LAMBDA(r,SUM(INDEX(B2:F6,HSTACK(1,r),HSTACK(r,1)))))))
2.=LET(a,"A"&SORT(REDUCE("",ROW(1:4),LAMBDA(x,v,TOCOL(REPLACE(x,SEQUENCE(,v),,MID("BCDE",v,1))))))&"A",HSTACK(a,BYROW(XLOOKUP(MID(a,{1,2,3,4,5},2),TOCOL(A2:A6&B1:F1),TOCOL(B2:F6)),SUM)))
3.=LET(a,A2:A6,b,ROWS(a),c,PERMUT(b,b),d,MAP(SEQUENCE(c,,0),LAMBDA(x,LET(m,LAMBDA(i,s,v,z,LET(p,IF(z=0,0,MOD(ROUNDDOWN(x/(v/z),0),z)+1),IF(p=0,"",INDEX(s,p)&i(i,FILTER(s,s<>INDEX(s,p)),v/z,z-1)))),m(m,a,c,b))))),v,TAKE(a,1),w,FILTER(d,LEFT(d)=v)&v,k,TEXTSPLIT(ARRAYTOTEXT(TOCOL(a&"-"&B1:F1&"-"&B2:F6)),"-",", "),HSTACK(w,MAP(w,LAMBDA(x,SUM(XLOOKUP(MID(x,{1;2;3;4;5},2),BYROW(TAKE(k,,2),CONCAT),--TAKE(k,,-1)))))))
