簡單SUMIFS()應該工作,以找到最便宜的路線:
=MIN(SUMIFS(4:4,3:3,"*" & {"B","C"}&"*",4:4,"<>999999"))
然後一個INDEX/MATCH找到地點:
=INDEX({"B","C"},MATCH(MIN(SUMIFS(4:4,3:3,"*" & {"B","C"} & "*",4:4,"<>999999")),SUMIFS(4:4,3:3,"*" & {"B","C"} & "*",4:4,"<>999999"),0))
編輯
要做到你想要的公式,on就需要另一個表。在一列中列出所有可能的位置。
在第二列中使用此公式找到,如果它是隻有起點和沒有業務流到或通過它:
=COUNTIFS($3:$3,"*" & A6,$4:$4,"<>999999")>2
現在我們可以從上方稍微修改公式引用這個新表並獲得正確答案:
現在這些數組公式:
最便宜的路線的值:
=MIN(IF(B6:B8,SUMIFS(4:4,3:3,"*" & IF(B6:B8,A6:A8)&"*",4:4,"<>999999"),999999))
最便宜的位置的名稱:他們需要與退出編輯時按Ctrl-Shift鍵,回車確認
=INDEX(A6:A8,MATCH(MIN(IF(B6:B8,SUMIFS(4:4,3:3,"*" & IF(B6:B8,A6:A8)&"*",4:4,"<>999999"),999999)),SUMIFS(4:4,3:3,"*" & A6:A8 &"*",4:4,"<>999999"),0))
作爲數組公式模式而不是Enter。如果正確完成,Excel將在公式周圍放置{}
。
編輯#2
下面是無需工作的助手列公式:
=MIN(IF(COUNTIFS($3:$3,"*" &{"A","B","C"},$4:$4,"<>999999")>2,SUMIFS(4:4,3:3,"*" & IF(COUNTIFS($3:$3,"*" & {"A","B","C"},$4:$4,"<>999999")>2,{"A","B","C"})&"*",4:4,"<>999999"),999999))
和
=INDEX({"A","B","C"},MATCH(MIN(IF(COUNTIFS($3:$3,"*" &{"A","B","C"},$4:$4,"<>999999")>2,SUMIFS(4:4,3:3,"*" & IF(COUNTIFS($3:$3,"*" & {"A","B","C"},$4:$4,"<>999999")>2,{"A","B","C"})&"*",4:4,"<>999999"),999999)),SUMIFS(4:4,3:3,"*" & {"A","B","C"} & "*",4:4,"<>999999"),0))
它們仍然是數組公式,必須用Ctrl-Shift-Enter確認。
會不會是最便宜的A? A + AB + AC + AA = 1220? –
如果您選擇A,那麼字母「A」必須是結尾字母。就像我在最後有「C」或者在我添加的每個變量中都有。這封信本身必須包含在內,因爲這是固定成本。所以,用「A」應該是A + AA = 20,但這不是一個完整的路徑。它沒有做任何事情。 – DD1
那麼爲什麼BC被添加到B使其大於C?如果你只走過最後一個字母,那麼只有B = 1100 –