是否有一种方法可以验证CAS数在Excel工作表中的输入,而无需使用任何VBA代码,也不需要使用存储数据的单元格?
正如您在链接中看到的,CAS数字的校验和由几个步骤组成,每个数字在最后执行校验和之前被识别、乘以和和。
除了这个校验和,还有第二个条件,即所有CAS数字必须是50-00-0或更高。
将所有需要的操作填入自定义数据验证公式框的255个字符限制中似乎是不可能的。
发布于 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个字符的限制。因此,如果有人有任何建议,如何进一步缩短公式,这将是非常感谢的。
https://stackoverflow.com/questions/51917958
复制相似问题