冷知识:列标和列数的互转!
列数转列标
这里用到2个函数,一个是address,一个是substitute。address函数根据指定的行号和列号返回某个单元格的文本地址。比如address(2,3)返回2行3列的单元格地址"$C$2"。
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:一个文本值,代表工作表名称。如果省略,则引用当前工作表的单元格,不会添加工作表名。
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,)
列标转列数
下图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