Google Sheets库存管理:新增商品后Item ID错乱问题求助
解决Google Sheets库存系统Item ID错乱问题
问题根源
你当前的Item ID公式=ArrayFormula(IF(LEN(B:B),if(ROW(B:B)=1,"Item ID",TEXT(ROW(A:A)-1,"0")),))依赖当前行的位置生成ID,而QUERY公式用Order by C desc排序,新增商品后原有商品的行位置会变化,导致ID全部错乱。
解决方案:基于商品唯一标识生成固定ID
我们可以通过商品的唯一属性(名称+规格等)生成固定ID,确保原有商品ID不变,新增商品自动获得最大编号。
步骤1:修改「Seles & Pur. Supt.」工作表A列公式
替换原有的ID生成公式为以下内容:
=ArrayFormula( IF(ROW(A:A)=1,"Item ID", IF(LEN(B:B), TEXT( MATCH(B:B&"|"&E:E&"|"&F:F, UNIQUE('Purchase DB'!C:C&"|"&'Purchase DB'!E:E&"|"&'Purchase DB'!F:F), 0), "0" ), "" ) ) )
原理说明
- 唯一键生成:将「Purchase DB」中商品的名称(C列)、属性(E/F列)用
|拼接成唯一键,确保不同商品(哪怕同名但规格不同)能被区分。 - 固定ID逻辑:
UNIQUE('Purchase DB'!C:C&"|"&'Purchase DB'!E:E&"|"&'Purchase DB'!F:F)会保留商品首次出现的顺序,每个唯一键在这个列表中的位置就是它的固定ID。 - 新增商品处理:新增商品会被追加到
UNIQUE列表的末尾,自动获得比现有最大ID大1的编号,不会影响原有商品的ID。
注意事项
- 如果你的商品唯一标识不需要包含E/F列,可以去掉对应部分,比如改成
B:B和'Purchase DB'!C:C。 - 若修改已有商品的名称/属性,会生成新的唯一键,导致ID变化,如需修改商品信息,建议直接在「Purchase DB」中更新,确保唯一键的稳定性。
内容的提问来源于stack exchange,提问作者Deuk Roy
相关产品推荐
相关产品推荐

