首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不使用VBA的情况下对Excel工作表中的CAS编号执行数据验证?

如何在不使用VBA的情况下对Excel工作表中的CAS编号执行数据验证?
EN

Stack Overflow用户
提问于 2018-08-19 13:08:41
回答 1查看 1.5K关注 0票数 0

是否有一种方法可以验证CAS数在Excel工作表中的输入,而无需使用任何VBA代码,也不需要使用存储数据的单元格?

正如您在链接中看到的,CAS数字的校验和由几个步骤组成,每个数字在最后执行校验和之前被识别、乘以和和。

除了这个校验和,还有第二个条件,即所有CAS数字必须是50-00-0或更高。

将所有需要的操作填入自定义数据验证公式框的255个字符限制中似乎是不可能的。

EN

回答 1

Stack Overflow用户

发布于 2018-08-19 13:08:41

是的,可以在Excel工作表中验证CAS编号格式,而无需使用任何VBA代码或任何额外的单元格。

解决办法如下:

首先,将单元格的数据格式定义为"0-00-0“。

这将确保CAS数字的正确显示,而存储的值是数字,这比文本字符串更容易用于校验和。

其次,选择要使用的单元格(在本例中我使用单元格B5),并将下列公式复制/粘贴到自定义公式框(数据→数据验证)中:

=AND(MOD(INT(MOD(B5/10,10))*1+INT(MOD(B5/100,10))*2+INT(MOD(B5/1e3,10))*3+INT(MOD(B5/1e4,10))*4+INT(MOD(B5/1e5,10))*5+INT(MOD(B5/1e6,10))*6+INT(MOD(B5/1e7,10))*7+INT(MOD(B5/1e8,10))*8+INT(MOD(B5/1e9,10))*9,10)=MOD(B5,10),B5>=5e4)=TRUE

这个公式由234个字符组成,非常适合。只能直接输入(键入或复制/粘贴)范围为A1:Z9和A10:Z99的单元格的正确公式。这些范围以外的单元格需要至少256个字符的公式(由于单元格引用较长),这将不适合。

然而,仍然可以在这些范围之外使用数据验证。只需将单元格复制/粘贴到工作表中的任何位置即可。数据验证将被复制,并将继续工作。以下(352个字符!)公式是从单元格XFD1048576的自定义数据验证公式框中复制出来的。

=AND(MOD(INT(MOD(XFD1048576/10,10))*1+INT(MOD(XFD1048576/100,10))*2+INT(MOD(XFD1048576/1000,10))*3+INT(MOD(XFD1048576/10000,10))*4+INT(MOD(XFD1048576/100000,10))*5+INT(MOD(XFD1048576/1000000,10))*6+INT(MOD(XFD1048576/10000000,10))*7+INT(MOD(XFD1048576/100000000,10))*8+INT(MOD(XFD1048576/1000000000,10))*9,10)=MOD(XFD1048576,10),XFD1048576>=50000)=TRUE

当我尝试输入一个非整数值时,您可以在下面看到这个单元格的数据验证是正确的。

在将来的某个时候,CAS将需要在CAS数字格式中添加第11位数字(因为它们将耗尽数字)。当发生这种情况时,需要另外27个字符来执行数据验证。这将不符合255个字符的限制。因此,如果有人有任何建议,如何进一步缩短公式,这将是非常感谢的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51917958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档