我有这三个表,如下图所示: SalesOrderTable,OrderAdjustmentTable和TotalSalesTable。
SalesOrderTable
SalesOrderTable中的每个订单号代表同一张发票中产品的订单号。如果发票是为一种以上的产品制成的,则有A,B或C,但如果仅是一种产品的发票则没有。 例如:订单1703有两个产品,因此每个订单号的末尾都有A和B。订单1704仅具有Apple订单,因此末尾没有任何字母。
OrderAdjustmentTable
每个订单号如有任何调整,请在调整栏中手动输入。
TotalSalesTable
在此表中,所有总销售额和同一订单号的调整额总计。因此,对1705的订购是1705A,1705B,1705C的组合。
这是我当前的公式,所有公式都会产生错误消息或计算不正确。
订单总额栏:
=SUMIF(SalesOrderTable[Order Number], LEFT(G4,LEN(SalesOrderTable[Order Number])-1),SalesOrderTable[Order Sales Amount])
订单总额调整列:
=sumifs(OrderAdjustmentTable[#All],OrderAdjustmentTable[Order Number],MATCH(B19,LEFT(SalesOrderTable[Order Number],LEN(SalesOrderTable[Order Number])-1), 0), "*Adjustment",OrderAdjustmentTable[#All])
我知道它可能与match和sumifs有关,但是我做的所有公式都导致出现错误消息。 任何人都可以帮助我解决我对上述公式的错误处理,以及如何解决?我在这里尽我所能,将不胜感激。非常感谢!
编辑:
我想要实现的是填充:
TotalSalesTable中的订单总金额列,所有订单均具有相同的订单号,而不考虑其ABC。因此1705的总金额将是1705A,1705B,1705C的订单金额之和。
对于订单总计调整,我希望从OrderAdjustmentTable获得TotalSalesTable中订单号列的所有调整值,而不论其ABC是多少。因此,TotalSalesTable中1705的总调整将为1705B和1705C。
答案 0 :(得分:1)
将其弄乱一秒钟,将LEFT
放在SUMIF
中似乎会引起问题(至少在Mac上如此)。
我建议先计算订单号,而不要在单独的栏中输入字母。 LEFT
返回一个字符串,因此我必须将其包装在VALUE
中,以便SUMIF
能够匹配。由于你们所有人都是四位数,我只用了VALUE(LEFT([@[Order Number]],4))
那只是标准的SUMIF
表示法:
=SUMIF(Table1[Base Num],[@[Order Number]],Table1[Order Sales Amount])
示例:https://www.dropbox.com/s/yj6ktl14jqglxsm/Example.xlsx?dl=0
您可以通过多种方式获取订单号,但是您必须谨慎对待示例:
LEFT(G4,LEN(SalesOrderTable[Order Number])-1)
,因为这对于1703A
和12990B
来说是正确的,但是将从1701
中删除一个数字。
编辑:如果数字位数不同,这是一种获取订单号的方法:=IFERROR(VALUE(A2),VALUE(LEFT(A2,LEN(A2)-1)))
这是说:“如果VALUE(A2)
返回一个错误(意味着其中包含字母),请删除最后一个字符,否则请使用VALUE(A2)
,因为它已经是一个数字。”
答案 1 :(得分:1)
只要不存在带有字母和不带字母的订单(例如,具有记录1703、1703A和1703B的SalesOrderTable),下面的公式就应该在单元格C19中起作用,您可以从中复制下来:
订单总金额:
=SUMIFS(SalesOrderTable[Order Sales Amount],SalesOrderTable[Order Number],$B19)+SUMIFS(SalesOrderTable[Order Sales Amount],SalesOrderTable[Order Number],$B19&"*")
此公式将精确匹配和近似匹配相加在一起,但是就像我说的那样,如果同时有和缺少字母的订单都可能重复/重复计算。您还应该能够复制“订单总额调整项”列的公式。