【发布时间】:2018-12-14 11:42:26
【问题描述】:
如果我在标题中提出的问题是不可能的,我会解释我需要什么,也许还有其他方法可以解决它。
我有一个列表,其中包含以“ - ”分隔的值或值范围,见下文:
9565
9570
9626 - 9627
A015 - A020
A040 - A042
A070 - A072
A078 - A082
A095 - A097
GGAA - GGZZ
我想创建一个循环遍历行并将范围“分解”为单个值的宏。使用我示例的前 4 行,输出将是:
9565
9570
9626
9627
A015
A016
A017
A018
A019
A020
...
遗憾的是它们并不总是数字,所以我不能只是将范围放入循环中,然后在循环结束之前将 +1 添加到前一个值。
有什么想法吗?
在此先感谢您对我的英语错误深表歉意。
【问题讨论】:
-
顺便说一句,如果有其他没有 VBA 的解决方案我愿意接受,请记住我在工作中需要这个,我没有很多系统管理员权限,所以我不能实例安装外部应用程序。
-
我们可以假设所有字符都是大写的吗?
-
我们可以假设所有的值都是 4 个字符吗?
-
我不会将其添加为答案,因为您可能拥有的最高字母是 XFC+1 并且它根本不处理数字 - 它只是基于关闭标题中的“ABC+1 = ABD”。使用
A1中的字母和B1中的数字,此公式将计算 Excel 列并将所需的列数添加到其中:=LEFT(ADDRESS(1,COLUMN(INDIRECT($A$1 & 1))+$B$1,2),FIND("$",ADDRESS(1,COLUMN(INDIRECT($A$1 & 1))+$B$1,2))-1)。 -
@DarrenBartrup-Cook 或
=SUBSTITUTE(MID(CELL("address", OFFSET(INDIRECT(A1 & "1"), 0, 1)), 2, 99), "$1", "")