Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用excel找到给定网络的“最佳”或最便宜位置_Excel_Function_Networking - Fatal编程技术网

如何使用excel找到给定网络的“最佳”或最便宜位置

如何使用excel找到给定网络的“最佳”或最便宜位置,excel,function,networking,Excel,Function,Networking,我在下图中有以下网络: 网络 正如你所见,答案是经过计算和已知的。但是,答案很容易计算,因为数字很少。让我解释一下它是如何工作的。有三个地点A、B和C。从A到A、B到B或C到C的旅行费用为0美元,如给出的价格所示。类似地,从A到B和从B到C,成本分别为1000美元和200美元。那么,固定价格是A=20美元,B=C=100美元。9999999只是表示路径不能被选择,这意味着它不能被选择 在我们的例子中,如果只需要选择一个位置,那么所有的字母和字母组合都会加在一起,只要它是最便宜的,因此是最好的解决

我在下图中有以下网络:

网络

正如你所见,答案是经过计算和已知的。但是,答案很容易计算,因为数字很少。让我解释一下它是如何工作的。有三个地点A、B和C。从A到A、B到B或C到C的旅行费用为0美元,如给出的价格所示。类似地,从A到B和从B到C,成本分别为1000美元和200美元。那么,固定价格是A=20美元,B=C=100美元。9999999只是表示路径不能被选择,这意味着它不能被选择

在我们的例子中,如果只需要选择一个位置,那么所有的字母和字母组合都会加在一起,只要它是最便宜的,因此是最好的解决方案。但是,必须选择所有结尾带有该字母的字母。因此,在我们的示例中,我们选择C作为所选位置,因为如果您为A或B添加所有字母及其组合,那么您将获得不少于1300美元的收益。另一个条件是,它必须完成路径


我希望这是有意义的。如果我有更多的数字要输入,我想在excel中找到1300美元的东西。

一个简单的SUMIFS应该可以找到最便宜的路线:

=MIN(SUMIFS(4:4,3:3,"*" & {"B","C"}&"*",4:4,"<>999999"))
=MIN(IF(B6:B8,SUMIFS(4:4,3:3,"*" & IF(B6:B8,A6:A8)&"*",4:4,"<>999999"),999999))

它们仍然是数组公式,必须使用Ctrl-Shift-Enter确认


但是,我们不知道它在手之前是C。我们需要搜索它。请参见编辑@Bob。如果对你有效,请点击答案旁边的复选标记,将其标记为正确。你能告诉我4:4和3:3是什么吗?还有,您是否预先选择了B和C?@Bob它们是整行引用。3:3是第3行,以此类推。如果我有列呢?这意味着数据被转置了?最便宜的不是A吗?A+AB+AC+AA=1220?如果选择A,则字母A必须是结尾字母。就像我在每一个变量的末尾都有C一样。信件本身必须包括在内,因为这是固定费用。所以,对于A,它应该是A+AA=20,但这不是一条完整的路径。它什么也没做。那么为什么把BC加在B上,使它大于C呢?如果你只看最后一个字母,那么B=1100你不涉及C,你必须。我的问题比这复杂得多。在我的问题中,我必须至少选择三个位置。这有点不同,但概念是一样的。只是说说而已。见下文。您可能需要刷新屏幕。
=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))
=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))
 =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))