我有一个列,其中每个单元格都包含这种格式的数据:
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)))这基本上是用替换来替换空格,然后使用中间提取第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发布于 2019-10-03 16:55:34
假设您的工作表是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没有测试,但应该有效
祝你好运伙计!
https://stackoverflow.com/questions/58221485
复制相似问题