最近在用Google Sheets管理设备,需要一个公式来统计设备的当前状态,例如设备是否正在被使用以及使用人信息。我思考了十秒钟,但没有答案,于是选择使用ChatGPT来生成这个公式。
但ChatGPT在明确表示理解需求后,却给出了错误的答案,本文就带大家看看发生了什么。
要做什么?
我用两个表来管理设备
记录表,用来记录设备的领用和退还操作,数据不可更改,所有新的操作都以添加新的记录来完成。
| Name | SN | date | operation | |
|---|---|---|---|---|
| Device1 | 2266553 | a1@bb.com | 2023-04-25 | 领用 |
| Device2 | 2266554 | a2@bb.com | 2023-04-26 | 领用 |
| Device1 | 2266553 | a1@bb.com | 2024-04-25 | 退还 |
当前状态表,用来快速查看设备的当前状态,它由记录表中的操作记录计算得来。
| Name | SN | |
|---|---|---|
| Device1 | 2266553 | |
| Device2 | 2266554 | a2@bb.com |
这里的需求就是当前状态表中email列的计算公式,该公式的逻辑如下:
- 从记录表中找到所有与当前SN相同的记录。
- 如果最后一条记录的操作是领用,那么当前状态表中email的值就是这条记录的email。
- 如果最后一条记录的操作是退还,那么当前状态表中email的值为空。
- 这里最后一条记录是指行号最大的记录。
怎么做?
输入需求
我将两个表的结构和公式的逻辑输入给ChatGPT,并要求其在不理解时提出问题。

可以看到,ChatGPT认为我的需求很清晰,没有提出任何问题,并且输出了它所理解的需求。
确认需求
我不确定ChatGPT是否真正理解了最后一条记录的含义,就进行了再次确认。

ChatGPT的回答和我的理解完全一致,可以生成公式了。
生成公式

ChatGPT给出了公式,但它和我对最后一条记录的要求是不一致的。VLOOKUP是找到匹配的第一条记录,而不是最后一条。
错误与妥协
这个结果很出乎我的意料。ChatGPT对公式的解释和我想要的完全一致,但给出的公式却是错误的。我对需求进行了多次优化,加入了对最后一条记录的解释,也让ChatGPT确认了它对最后一条记录的理解,但是都没有得到正确的结果。
然后,我开始反思ChatGPT给出的公式是否合理。我原来设想的是,每增加一个操作就在记录表的最后面添加一条记录。而ChatGPT的公式只有在最前面添加一条记录才是正确的。在记录数量不大时,这两种方法没有什么区别。但在记录数量很大时,在最后一行下面插入一行就没有在第一行上面插入一行方便了。
最后我选择了妥协,采用了让ChatGPT公式正确运行的管理方法,即通过在第一行上面插入一行来添加新操作。这样最后一条记录的定义就变成了行号最小的记录。
总结
这个例子表明,即便ChatGPT理解了我们的需求,也可能给出错误的解决方案。原因可能是我们的需求与大多数人的需求不同,ChatGPT没有相关的训练数据,只能给出最常见的解决方案。所以,我们还是需要仔细验证ChatGPT给出的解决方案,不能直接复制粘贴。