我有一列,其中每个单元格包含以下格式的数据:
ABC | DEF | GHI | |
ABC | DEF | GHI | JKL |
ABC | DEF | | |
我需要提取第一个和最后一个有效(即不为空)子字符串。 我可以使用公式轻松提取第一个/最后一个子字符串(尽管它很笨拙):
FIRST SUBSTRING
=TRIM(MID(SUBSTITUTE(A1,"|",REPT(" ",LEN(A1))),(4-4)*LEN(A1)+1,LEN(A1)))
LAST SUBSTRING
=TRIM(MID(SUBSTITUTE(A1,"|",REPT(" ",LEN(A1))),(4-1)*LEN(A1)+1,LEN(A1)))
这基本上是用SUBSTITUE代替“ |”使用空格分隔的delim,然后使用MID提取第n个子字符串,然后使用TRIM替换多余的空格...但是,如果最后一个定界的子字符串为空,则返回一个空字符串(按我的意思)。
如何修改此公式以提取最后一个有效的子字符串(即不为空的“”)。有人可以告诉我如何使用VBA代码执行此操作吗?
ABC | DEF | GHI | |
Output column 1: ABC
Output column 2: GHI
ABC | DEF | GHI | JKL |
Output column 1: ABC
Output column 2: JKL
ABC | DEF | | |
Output column 1: ABC
Output column 2: DEF
答案 0 :(得分:0)
假设您的工作表是WS
并且您的值从A2单元格开始直到A120
dim zeValue$, out1$, out2$
dim i as int
for i = 2 to 120
zeValue = replace(replace(WS.range("A" & i),' ',''),'|','')
out1 = left$(zeValue,3)
out2 = right$(WS.range(zeValue, 3)
debug.print('out1 : '+out1)
debug.print('out2 : '+out2)
next i
未经测试,但应该可以工作
祝你好运!!