我在单元格中有信息,我只想提取它的某些部分。 CR中分隔的单元格中有行。
EG。 :
This is line 1
This is line 2
How Are you??
That is line 3
---------------------------
this is line 4
that is line 8
I want this line too
以上都在一个单元格内。我想只提取不以此为开头的行或-----或如何
那是第3行 这是第8行 我也想要这条线
因此,当我运行VBA或宏时,我最终会得到3行。
每个句子都不是一成不变的。即它可以是任何长度的单词,但我想要截断的那些单词的第一个单词是不变的,即以This或That开头。那些我想要保留的东西通常不是一成不变的,因为它是一个由用户密切关注的开放领域。
所以我想截断以---或This或That开头的行,但保留其他内容。
这适用于一系列细胞,例如。从A1到A100。
希望我提供的信息足够。
欢呼声 杰弗里
答案 0 :(得分:2)
Dim Arr(), FinalResult,count
range("A1").Select
for count=1 to 100
Arr = Split(ActiveCell, vbLf)
Dim i ,j
For each i in Arr
j=Mid(i,1,4)
if Not ( j="This" or j= "this" or j= "That" or j="that" or j="----") then
FinalResult=FinalResult & i & VbLf
End If
Next
MsgBox FinalResult
Activecell.offset(1,0).select
next
答案 1 :(得分:0)
这是一个单元格的示例。如第二条评论中所述,您可以循环到目标范围内的每个单元格。你对结果字符串的处理也取决于你。
Public Sub GetThisAndThatLines()
Dim sText() As String
Dim sResult As String
sText = Split(Selection.Text, vbLf)
Dim i As Integer
For i = 0 To UBound(sText)
If LCase(Left(sText(i), 4)) = "this" Then
sResult = sResult + sText(i) & vbCrLf
ElseIf LCase(Left(sText(i), 4)) = "that" Then
sResult = sResult + sText(i) & vbCrLf
End If
Next
MsgBox sResult
End Sub