VBA提取指定区域特定值
初学VBA有个问题总是解决不了,跪求各位大神帮解答下;如下图A列单月格SIDRT是固定的,后面数值不固定,需要利用代码查找两段SID之间包含CA的RTXXX,然后赋值在C...
初学VBA有个问题总是解决不了,跪求各位大神帮解答下;如下图A列单月格SID RT 是固定的,后面数值不固定,需要利用代码查找两段SID之间包含CA的RTXXX,然后赋值在C列,自己写的执行不了,语法错误太多,辛苦帮看下;
展开
2个回答
展开全部
你的代码太简单了,我自己写了下面的代码:
Option Explicit
Sub 提取SID之间有CA的RT()
Dim i, j, k, n, arr, sid1, sid2, ca
帆桥n = Cells(Rows.Count, 1).End(xlUp).Row
arr = Cells(1, 1).Resize(n, 1) '获取A列数据
i = 1
k = 1
While i < n '扫描A列所有数据
ca = False
'.1 找到一个SID => sid1
While Left(arr(i, 1), 3) <> "SID"
i = i + 1
If i > n Then Exit Sub
Wend
If i < n Then sid1 = i Else Exit Sub
'.2 找到下一个SID => sid2
i = i + 1
While Left(arr(i, 1), 3) <态喊猛> "渗行SID"
If Left(arr(i, 1), 2) = "CA" Then ca = True
i = i + 1
If i > n Then Exit Sub
Wend
If i < n Then sid2 = i Else Exit Sub
'.3 根据中途属否遇到过CA,决定是否输出RT
If ca Then
For j = sid1 + 1 To sid2 - 1
If Left(arr(j, 1), 2) = "RT" Then
Cells(k, 3) = arr(j, 1)
k = k + 1
End If
Next j
End If
Wend
End Sub
程序代码和例子数据:
执行完毕后的情况:
展开全部
Sub s()
i = 1
n = Sheet1.Cells(Rows.Count, 1).End(3).Row
Do While i <= n
ca = False
Do Until Sheet1.Cells(i, 1) Like "SID*"
If Sheet1.Cells(i, 1) Like "RT*" Then
rt = Sheet1.Cells(i, 1)
桥扒 ElseIf Sheet1.Cells(i, 1) Like "CA*" Then
ca = True
End If
敏拍昌 i = i + 1
贺烂 If i > n Then Exit Do
Loop
If ca Then
k = k + 1
Sheet1.Cells(k, 3) = rt
End If
i = i + 1
Loop
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询