我需要从之前创建的列表中获取下一个值。自定义列表是字母“A、B、C....AA、AB、AC...”。当我从 B52:G52 应用它并在 B52 中写入“C”并将单元格拖到 G52 时,列表被应用,因此在 C52 = D、D52 = E ....
我如何通过公式知道下一个值是什么。如果我在 B52 中有“C”,那么在 C52 中的公式应该是“D”。
到目前为止,我有一个单元格 P1 包含字母“B”且单元格 B52=P1,并且在 C52 中有一个公式 =IF(C45; B52 + 1; ""),当单元格 C45 不为空(空白)时适用。
现在,如果我在 P1 中写入“C”,它会自动复制到 B52 中。当我在 C45 中写入内容时,单元格 C52 应该变为“D”。但“B52+1”部分是错误的。
感谢您的帮助。
答案1
如果你处理的是数字,那么使用B52+1
就可以了,但是当你使用字母时,你需要使用CHAR()和代码()函数,再加上在逻辑测试中只引用单元格C45
而不定义要应用于单元格的测试,C45
不会产生任何结果。要测试单元格是否C45
为空,您需要进行逻辑测试C45<>""
如果你要从 AZ 开始,则需要将单元格中的公式更改C52
为
=IF(C45<>"",CHAR(CODE(B52)+1),"")
此公式的问题是,如果您使用此公式并经过下Z
一个单元格,则会返回一个,[
因为它使用了ASCII 字符集
当你想进一步从Z
到时,AA
你将需要一个更复杂的公式LEN(),左边()和正确的()功能。
因此单元格中的公式C52
需要
=IF(C45<>"",IF(B52="Z","AA",IF(LEN(B52)=1,CHAR(CODE(B52)+1),(IF(RIGHT(B52)="Z",CHAR(CODE(LEFT(B52))+1)&"A",LEFT(B52)&CHAR(CODE(RIGHT(B52))+1))))),"")
这从到A
,Z
从到Z
,AA
然后给AA
到ZZ