You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:为图书馆台账数据生成唯一主键/外键并处理重复书籍ID

图书馆台账唯一ID生成方案(重复条目自动匹配一致ID)

核心思路

基于书籍的唯一标识组合字段(书名+作者+ISBN,三者组合基本能确保书籍唯一性)生成ID,重复的组合自动复用已有ID,新组合则生成新ID。以下是常用电子表格工具的具体实现方案:


Excel 方案

假设表格字段对应:

  • B列:书名
  • C列:作者
  • E列:ISBN
  • F列:待生成的BookID(作为主键)

公式1(新版Excel,支持XLOOKUP)

在F2单元格输入后下拉填充:

=IFERROR(XLOOKUP(TRIM(LOWER(B2))&TRIM(LOWER(C2))&TRIM(LOWER(E2)),$B$1:B1&$C$1:C1&$E$1:E1,$F$1:F1,,-1),MAX($F$1:F1)+1)
  • TRIM(LOWER()):统一处理空格和大小写,避免因格式差异误判为不同书籍
  • XLOOKUP:向上查找已有行中是否存在相同标识组合,找到则返回对应ID
  • MAX(...) +1:未找到时,用当前最大ID加1生成新ID(第一行自动生成ID为1)

公式2(旧版Excel,无XLOOKUP)

用INDEX+MATCH替代实现:

=IFERROR(INDEX($F$1:F1,MATCH(TRIM(LOWER(B2))&TRIM(LOWER(C2))&TRIM(LOWER(E2)),$B$1:B1&$C$1:C1&$E$1:E1,0)),MAX($F$1:F1)+1)

Google Sheets 方案

批量生成公式(一次性填充整列)

在F1单元格输入,自动生成所有行的ID:

=ARRAYFORMULA(IF(A2:A="",,MATCH(TRIM(LOWER(B2:B))&TRIM(LOWER(C2:C))&TRIM(LOWER(E2:E)),UNIQUE(TRIM(LOWER(B2:B))&TRIM(LOWER(C2:C))&TRIM(LOWER(E2:E))),0)))
  • ARRAYFORMULA:批量处理整列数据,无需逐行下拉
  • MATCH+UNIQUE:给每个唯一标识组合分配从1开始的连续ID,重复组合自动匹配相同ID

补充说明

  1. 如果数据中ISBN字段完整且无重复,可直接用ISBN作为ID,省去组合字段的操作
  2. 若需要可读性更强的ID(如BOOK-001),可在公式外层拼接前缀,例:
    ="BOOK-"&TEXT(IFERROR(XLOOKUP(...),MAX(...)+1),"000")
    

内容的提问来源于stack exchange,提问作者Chubbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:55:16