首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用excel中的VBA提取第一个和最后一个分隔子字符串(非空子字符串)

使用excel中的VBA提取第一个和最后一个分隔子字符串(非空子字符串)
EN

Stack Overflow用户
提问于 2019-10-03 14:39:19
回答 1查看 124关注 0票数 0

我有一个列,其中每个单元格都包含这种格式的数据:

代码语言:javascript
复制
ABC |  DEF |  GHI |   |

ABC |  DEF |  GHI | JKL |

ABC |  DEF |   |   |

我需要提取第一个和最后一个有效的(即不是空的)子字符串。我可以很容易地使用公式提取第一个/最后一个子字符串(尽管它很笨重):

代码语言:javascript
复制
 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代码来完成这个任务吗?

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 16:55:34

假设您的工作表是WS

您的值从单元格A2开始,直到A120。

代码语言:javascript
复制
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

没有测试,但应该有效

祝你好运伙计!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58221485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档