【发布时间】:2020-11-27 13:16:49
【问题描述】:
我有一个工作表 - 为用户数据输入创建, 我创建了一个独特的 SurveyCode (由行号+文件名组成):
这是我用来生成 SurveyCode 的公式:
=CONCATENATE(ROW(Sheet1!A1),TRIM(LEFT(SUBSTITUTE(MID(CELL("filename",Sheet1!A1),
FIND("[",CELL("filename",Sheet1!A1))+1,255),".xl",REPT(" ",255)),255)))
我从单独的 Sheet1 中获取 Row(),因为如果用户决定删除工作表中的一条记录,那么我的 SurveyCode 公式之一被破坏,我将看到 # REF! 错误,而不是 4ClientSatisfactionSurvey,例如
我更改后的公式将如下所示:
=CONCATENATE(ROW(#REF!),TRIM(LEFT(SUBSTITUTE(MID(CELL("filename",Sheet1!A6),
FIND("[",CELL("filename",Sheet1!A6))+1,255),".xl",REPT(" ",255)),255)))
使用 ROW(#REF!) 而不是 ROW(A4)
因此,我决定将 Row() 存储在单独的工作表中。即使用户决定删除记录,在这种情况下,我的 SurveyCode 仍将保留。
但我还有另一个问题 - 如果 - 在删除记录后,潜在用户将创建一条新记录 - 它不会是唯一的,但会重复我的 sheet1 中的前一个行号。
例如 - 如果客户从工作表中删除 4ClientSatisfactionSurvey 记录,然后添加新记录 - 新的 SurveyCode 将 = 7ClientSatisfactionSurvey 而不是 8ClientSatisfactionSurvey
我认为,我的问题出在公式的第一部分 - 我不确定如何正确生成 SurveyCode 的唯一“数字”部分。
请帮忙...
【问题讨论】:
-
据我所知,没有办法在Excel中基于公式创建绝对安全的唯一ID方式,因为它可以修改/删除,导致一切失败。最好的方法是输入值。您应该考虑为此使用 VBA。
标签: excel auto-increment uniqueidentifier