LibreOffice Calc/Excel 匹配商品后提取对应行最新成本公式咨询
通用动态提取最新采购成本公式方案
LibreOffice Calc 适用公式(你的当前场景)
在comprasDet表的ctUnit列对应单元格(以第2行为例)输入以下公式,可直接向下拖拽批量填充:
=LOOKUP(2,1/(INDIRECT("$productos."&MATCH(D2,$productos.D:D,0)&":"&MATCH(D2,$productos.D:D,0))<>""),INDIRECT("$productos."&MATCH(D2,$productos.D:D,0)&":"&MATCH(D2,$productos.D:D,0)))
公式逻辑说明
- 内层
MATCH(D2,$productos.D:D,0)自动匹配当前D列商品在productos表中对应的行号 INDIRECT函数将匹配到的行号动态拼接为整行引用,不需要指定固定列范围,完美兼容后续新增的价格列- 外层LOOKUP逻辑保持你原有的验证可用的规则,自动提取匹配行最右侧的非空值,即最新登记的单位成本
总采购成本(ctTot)计算
假设采购数量存放在comprasDet表的C列,ctUnit单位成本存放在E列,第2行ctTot公式为:=E2*C2
直接向下拖拽即可批量计算所有行的总采购成本
Excel 兼容适配版公式
如果需要在Excel中使用,仅需把跨表引用的.替换为!即可,逻辑完全一致:
=LOOKUP(2,1/(INDIRECT("productos!"&MATCH(D2,productos!D:D,0)&":"&MATCH(D2,productos!D:D,0))<>""),INDIRECT("productos!"&MATCH(D2,productos!D:D,0)&":"&MATCH(D2,productos!D:D,0)))
注意事项
- 如果
productos表的商品名称存储列不是D列,将公式中对应的$productos.D:D(Excel版为productos!D:D)替换为实际存储商品名的列范围即可 - 匹配无结果时会返回错误值,可根据需要嵌套
IFERROR自定义返回内容,比如无匹配时返回空白:=IFERROR(原有公式,"")
内容的提问来源于stack exchange,提问作者Jerardo
相关产品推荐
相关产品推荐

