家里书一过百,「这本我是不是买过」就开始变成真金白银的问题。建一份书目是对的,但大多数人的藏书表活不过两百本——不是因为设计得不好,是因为设计得太好:字段太多,录一本要一分钟,很快就放弃了。
这篇给的是最小可用的一套,以及它会在哪里散架。
九个字段,一个不多
| 列 | 类型 | 为什么要 |
|---|---|---|
| ISBN | 文本 | 唯一键,查重和补全全靠它 |
| 书名 | 文本 | 人眼检索 |
| 作者 | 文本 | 同名书太多,作者是第二区分度 |
| 出版社 | 文本 | 判断版本的关键 |
| 出版年 | 数字 | 区分再版 |
| 位置 | 下拉 | 找得到书 |
| 状态 | 下拉 | 还算不算我的 |
| 购入日期 | 日期 | 唯一补不回来的痕迹 |
| 借出人 | 文本 | 状态为借出时才填 |
前五列回答**「这是哪本书」,中间两列回答「它现在什么处境」**,最后两列是痕迹。
明确不建议一开始就加的:评分、读后感、页数、封面图、豆瓣链接。它们的共同点是录入成本高、查询频率极低。想加的时候问自己一句:过去半年,我有几次真的需要按这个字段查东西?
一个可以当红线用的经验值:录一本书超过 20 秒,这份表活不过两百本。
ISBN 列:两个必须先做对的设置
第一,整列设成文本格式,在敲第一行之前就设。
978 开头的 13 位数字,被表格当成数值处理会变成 9.78712E+12,前导零的书号还会被吃掉零。这个坑的恶劣之处在于它不会报错,等你录到一百多本才发现,返工没有捷径。
第二,统一成 13 位、不带连字符。
978-7-115-42802-8 和 9787115428028 在机器眼里是两个不同的值。10 位老书号也要先换算成 13 位再录——长短混存,查重必漏。
顺带一提,ISBN 放第一列不是审美问题:扫码出来就是一串数字,光标停在第一列直接粘,是最快的录入姿势。
位置:编码,不要写句子
「爸妈家那个柜子里」这种写法,第二次写就变成「老家柜子」,排序和筛选立刻失效。
推荐房间-书架-层的三段式:
书房-A-3客厅-左-顶储藏室-箱2待归位
两条设计建议:
- 粒度到层为止。 精确到「第几本」听起来很爽,实际上书是会动的,维护成本会反过来吃掉你。
- 给临时状态留位置。 允许
待归位、床头这类值存在,比强迫每本书都有精确位置更接近现实——后者的结局是你干脆不填。
验证方法很简单:随机抽十本,只看表里的位置去找。找不到的那几条,说明编码粒度不够。
状态:六个值,而且不删行
建议的取值:在架 / 借出 / 在读 / 已送人 / 已售出 / 已丢失,用数据验证做成下拉。
手打的结局一定是「借出」「已借出」「借给老王了」三种写法并存,然后筛选彻底失效。
这里有一个反直觉但很关键的设计:后三种是终态,但不要删行。
书送人了、卖了、丢了,把行删掉看着干净。代价是——你再也不知道自己曾经有过这本书。下次在书店看到,你还是会买一次。
保留记录并让它继续参与查重,是这份表最省钱的地方。想知道「我现在有多少本」,按状态筛一下就行,不影响统计。
查重公式
ISBN 在 A 列,条件格式里选中整列,用公式:
=COUNTIF($A:$A,$A2)>1
命中标红,录入时当场可见。
想同时抓「换了版本重买」的情况,可以再加一条基于书名加作者的:
=COUNTIFS($B:$B,$B2,$C:$C,$C2)>1
但要有心理准备:书名的繁简、副标题带不带、空格多一个少一个,都会让它既漏报又误报。这条公式只能当提示,不能当判定。
前面提过的坑再说一次:ISBN 列不是文本格式时,COUNTIF 会把「文本的 9787…」和「数字的 9787…」当成两个值,明明重了却查不出来。查重失灵九成是这个原因。
天花板在哪:三个信号
表格方案不是不好,是有明确的适用边界。三百本以内、单人管理、买书不频繁,表格完全够用,别折腾。
以下任意一个信号出现,继续用表格的成本就超过收益了。
信号一:录入开始拖延
在手机上填表格是反人类的。一次买回来五本,要坐到电脑前敲二十分钟——第三次你就不填了。表格死于录入成本,不是死于功能不足。
信号二:查重发生在错误的时间
这是最致命的一条。你真正需要查重的时刻,是站在书店书架前,不是回家打开电脑之后。
而在手机上翻几百行表格找一本书,实际操作里几乎没人做得到。一个只能在书房里用的查重方案,防不住在书店里发生的重复购买。
信号三:家里第二个人也要用
共享一份云端表格,很快会遇到同时编辑冲突、格式被改乱、谁也不敢删行。表格没有权限概念,也没有操作留痕。
无论如何,先导出留底
换任何方案之前,把表格导出一份放好。字段设计本身是可以带走的资产——ISBN 做主键、位置用层级编码、终态不删行,这三条在任何方案里都成立。