Excel SUMIF 函数

Excel SUMIF 函数

我有这个 Excel 工作表,需要在其中计算运输费率。

我有一张运往不同目的地的两种卡车(大卡车和小卡车)的费率表 - 每种卡车的价格都不同。如下所示:

City    Big Lorry   Small Lorry
City A  1000        1150
City B  1800        1950
City C  2600        2750
City D  3900        3950

现在,我想在另一个表中输入卡车和目的地,Excel 应该根据上表自动填写价格。像这样:

City    Lorry   Price
City A  Small   
City D  Big 
City C  Big 
City B  Small   
City D      Small
City A      Big

请查看我上传 Excel 文件的 OneDrive 链接,这样我就可以轻松了解我需要什么。

Excel 文件

谢谢。

答案1

您可以使用 Excel 一步完成此操作,并且不需要 SumIf。只需在 Price 列中使用以下公式即可=VLOOKUP(A9,$A$2:$C$5,IF(B9="Small",3,2),FALSE)。这将查找第一列中的 City 值,然后根据卡车大小返回适当的价格。

这假设(就像您的示例数据一样)只有两种价格(大型和小型卡车),并且每个城市在第二个表中仅出现一次。如果这些假设不成立,请更新您的示例数据。

答案2

最好使用 VLOOKUP 来完成此操作,但它会比普通的 VLOOKUP 稍微复杂一些,因为您需要查看两列数据。

尽管这可以一步完成,但它不太具有前瞻性,因为如果添加更多尺寸,您将不得不更新公式,而且它可能会变得非常笨重。


步骤1
VLOOKUP 需要在目标表中查找单个值,但您要查找两个值。要解决此问题,您需要一个辅助列,并且由于 VLOOKUPS 从所选数据范围的左侧开始,因此它必须是表中的第一列。

  • 在源表中向左添加一列(如果使用 2007>,请确保表格范围包含新列)

  • 假设这个新列在 A 列中,大小在 B 列中,目标在 C 列中,请向其中添加此公式,并将其复制到范围内:

=连接($B2,$C2)

或者

=CONCATENATE([@Size],[@Distance])

你也可以这样做,=$B2&$C2但这样更容易让其他用户理解

  • 如果你愿意,你现在可以隐藏此列

步骤1


第2步
接下来是 VLOOKUP。

假设大小在 A 中,而目标在 B 中,则在您希望返回值的单元格中添加以下公式:

=VLOOKUP(CONCATENATE($A$2,$B$2),SourceTable,4,FALSE)

如果您不使用表格,则将 SourceTable(或您可能称呼的任何名称)替换为源表的范围。请注意,4 表示您想要的值跨越多少列。

第2步

答案3

您可以将 SUMIF 嵌套在 IF 语句中。

=IF(B1="Big",SUMIF(Sheet1!A2:A5,A1,Sheet1!B2:B5),IF(B1="Small",SUMIF(Sheet1!A2:A5,A1,Sheet1!C2:C5),"Invalid Name"))

=IF(Size="Big",SUMIF(City List,City,Big Cost),IF(Size="Small",SUMIF(City List,City,Small Cost),"Invalid Name"))

A1 = 城市
B1 = 卡车尺寸


理想情况下,在源表中,我会有一列表示规模,而不是两列表示成本。这样 SUMIF 或 VLOOKUP 就可以正常工作。CityA
Small 1500
CityA Large 1800
CityB Small 1350
CityB Large 1600

相关内容