冷知识:列标和列数的互转!

你好,我是刘卓。欢迎来到我的公号,excel函数解析。在excel中,我们都知道第1列的列标是A列,第7列的列标是G列,如果问你第99列的列标是什么,你知道吗?如果问你CK列是第几列,你知道吗?今天就来分享下列标和列数互转的方法。
-01-

列数转列标

下图A列是列数,要求是算出其对应的列标,把结果放在B列中。只需在B3单元格输入公式=SUBSTITUTE(ADDRESS(1,A3,4),1,),下拉填充即可。

这里用到2个函数,一个是address,一个是substitute。address函数根据指定的行号和列号返回某个单元格的文本地址。比如address(2,3)返回2行3列的单元格地址"$C$2"。

address语法如下,共有5个参数。

ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])

第1参数row_num:一个数值,指定行号

第2参数column_num:一个数值,指定列号

第3参数abs_num:一个数值,指定返回引用的类型。1或省略是绝对引用;2是行绝对,列相对;3是行相对,列绝对;4是相对引用。

第4参数a1:一个逻辑值,指定A1或R1C1引用样式。如果是true或省略,则代表A1样式,如果是false,则代表R1C1样式。

第5参数sheet_text:一个文本值,代表工作表名称。如果省略,则引用当前工作表的单元格,不会添加工作表名。

所以,下图的公式就返回1行某列的单元格的相对引用的A1样式的文本地址。返回A1样式的单元格地址就可以得到列标了,还需要将地址后面的1去掉。

substitute函数就是替换函数,SUBSTITUTE(ADDRESS(1,A3,4),1,)这部分就是将单元格地址中的1替换为空,得到了最后的列标。

还可以用进制转换的方法得到列标,只是公式比较复杂,供大家参考。

=SUBSTITUTE(BASE(SUM((DECIMAL(MID(RIGHT("  "&BASE(A3,26),3),{1;2;3},1),26)+9)*36^{2;1;0}),36),9,)


-02-

列标转列数

下图A列是列标,要求是算出其对应的列数,把结果放在B列中。只需在B11单元格输入公式=COLUMN(INDIRECT(A11&1)),下拉填充即可。

公式主要用到2个函数column和indirect。首先将列标和1连接得到文本型单元格地址,比如列标A和1连接得到"A1"。然后用indirect函数将文本型"A1"变为真正的A1单元格,最后用column函数返回A1单元格的列数。

也可以用进制转换的方法得到列数,公式如下,供大家参考。

=SUM((DECIMAL(MID(RIGHT(99&A11,3),{1;2;3},1),36)-9)*26^{2;1;0})

文件链接:

https://pan.baidu.com/s/16BJULw29NFya9-vOgcNafQ

提取码:szaq
(0)

相关推荐