0

我在一个单元格中有信息,我只想提取其中的某些部分。单元格内有由 CR 分隔的行。

例如。:

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

以上都在一个单元格内。我想只提取不以 THIS 或 ----- 或 How 开头的行

那是第 3 行 那是第 8 行 我也想要这条线

所以当我运行 VBA 或宏时,我会得到 3 行。

每个句子都不是一成不变的。即它可以是任何长度的单词,但我想要截断的单词中的第一个单词是不变的,即以This 或That 开头。我想保留的那些通常不是恒定的,因为它是用户所关注的开放领域。

所以我想截断以 --- 或 This 或 That 开头的行,但保留其他任何内容。

这是针对整个细胞范围的,例如。从 A1 到 A100。

希望我提供的信息足够。

干杯杰弗里

4

2 回答 2

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
于 2013-03-14T04:34:22.947 回答
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
于 2013-03-13T23:33:43.623 回答