如何将AA之类的字符串递增到AB?


10

我在Excel中有字符串,例如AAXA

我需要像这样增加它们:

对于AA在单元格A1中,它将AB在单元格B1,AC在单元格B2中,依此类推。

对于XA在单元格A1中,它将XB在单元格B1,XC在单元格B2中,依此类推。

我尝试了流行的代码,=CHAR(CODE(A1)+1)但是在Z之后不起作用。

欢迎任何提示。


Does not work after Z?您是说之后AZ还是ZZ
戴夫(Dave)2015年

嗨,戴夫,我尝试过AB,从那以后一直在寻找B。
Andy K

如果这与Excel引用单元格的方式有关,请考虑通过使用RC表示法避免使用它:File > Options > Formulas >R1C1 reference style
Dirk Horsten 2015年

嗨,德克,非常感谢您的建议。但是为什么呢?
Andy K

1
例如,如果您打算在INDIRECT公式中使用结果字符串,那么@DirkHorsten的注释可能值得注意。
CallumDA 2015年

Answers:


11

尝试以下操作:将“ AA”放入单元格A1中,然后将以下公式输入到单元格B1中,然后拖动到

=IF(RIGHT($A1,1)="Z", CHAR(CODE(LEFT(A1,1))+1),LEFT(A1,1))&CHAR(65+MOD(CODE(RIGHT(A1,1))+1-65,26))

它将增加如下:AA,AB,AC,...,AZ,BA,BB,BC ....等

您可能需要调整此公式以适合您的特定演示。请注意,这不能超过“ ZZ”。

更新:修复错误


1
= IF(RIGHT(A1)=“ Z”,CHAR(CODE(LEFT(A1))+ 1),LEFT(A1))&IF(RIGHT(A1)<>“ Z”,CHAR(CODE(RIGHT(A1) )+1),CHAR(65))
user26631 2016年

3

我们可以使用excel电子表格本身来帮助增加字母-的增加量从AXFC

首先创建单元格引用: INDIRECT(A1&"1")
然后在以下位置找到下一列的地址: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

然后从$ ?? $ 1中提取字母:2种方式:

  1. 寻找第二个$,然后在它们之间剪出文字

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. 将1和$替换为字符串中的任何内容

    =SUBSTITUTE(SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),"$",""),"1","")
    

选择最适合您的一个


2
您可以通过4ADDRESS函数中包含可选的第三个参数来使其返回相对的单元格引用,从而避免用“ $”代替。然后,您只需要公式即可:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll 2015年

2

另一个示例:将其键入到单元格A1中,然后将公式复制到任何或所有单元格中。

= CHAR(MOD(ROW(A1)-1; 26)+65)&CHAR(MOD(COLUMN(A1)-1; 26)+65)

旨在作为人们如何思考问题的示例。


2

到达“ Z”时将重置为“ A”

=IF(A1="Z", "A", CHAR(CODE(A1)+1))

您可以使用更多if语句扩展其范围。

要么

我只是为类似的公式写了这个公式:

IF(RIGHT(C2,1)="Z",IF(RIGHT(C2,2)="ZZ","A",CHAR(CODE(MID(C2,5,1))+1)),MID(C2,5,1))&IF(RIGHT(C2,1)="Z","A",CHAR(CODE(MID(C2,6,1))+1))

1

作为使用的另一种解决方案ADDRESS()是:

=MID(ADDRESS(1,26+ROW()),2,2)

上面的公式将AA在第一行和AB第二行中返回,依此类推。

同样,使用数学公式为:

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))

1

我使用此代码获取单元地址

=ADDRESS(ROW($AT$17),COLUMN($AT$17)+Increment,4,1)

此示例用于AT17单元地址。

增量定义要递增的数字

我在cell中编写了此代码Ax17

后来我得到的值AT17

=INDIRECT(AX17)

做完!!!

现在您可以增加列而不是行!


0

这是我的解决方案(单元格A1包含“ AA”):

=IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(CODE(LEFT(A2;1))+1);CHAR(CODE(LEFT(A2;1))))&IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(65);CHAR(CODE(RIGHT(A2;1))+1))

0

用从0到100 [或直到要求]的连续数字填充A列(从第1行开始)

用以下公式填充单元格B1

=CONCATENATE(CHAR(MOD(QUOTIENT(A1,26*26),26)+65),CHAR(MOD(QUOTIENT(A1,26),26)+65),CHAR(MOD(A1,26)+65))

将公式从B1复制到B列的其他行[直到您填充A列的行]

适用于3个字符的AAA到ZZZ

公式需要根据编号进行修改。所需的字符数(AA到ZZ / AAAAA到ZZZZZ等)


0

我知道这与主要问题略有出入,但我认为它可以回答更完整的问题...如果您在A1中有一个字母,并且希望它在B1中以一个数字步进,那么下面的公式组合将从ZZ的单个字母。

 =IF(LEN(A1)>1,IF((CODE(RIGHT(A1,1))+$B$1)>CODE("Z"),CHAR(CODE(LEFT(A1,1))+1)&CHAR(CODE(RIGHT(A1,1))-21),LEFT(A1,1)&CHAR(CODE(RIGHT(A1,1))+$B$1)),IF((CODE(A1)+$B$1)>CODE("Z"),"A"&CHAR(CODE(A1)-21),CHAR(CODE(A1)+$B$1)))

将其复制到列中,结果在那里。更改B5编号,结果将更改。


-1
=IF(AND(LEN(G1)=1,G1="Z"), "AA", IF(LEN(G1)=1, CHAR(CODE(G1)+1), IF(RIGHT(G1,1)<>"Z", LEFT(G1,1)&CHAR(CODE(RIGHT(G1,1))+1), CHAR(CODE(G1)+1)&"A")))

2
能否请您添加一些解释,扩大答案
Romeo Ninov

-1

对于Columns,以下是正确的解决方案。

= IF(LEN(ADDRESS(1,COLUMN()))= 4,MID(ADDRESS(1,COLUMN()),2,1),MID(ADDRESS(1,COLUMN()),2,2))


3
我看不到您的公式如何回答“如何将字符串从AA递增到AB?”的问题。
马塔·朱哈斯(MátéJuhász)'18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.