提取单元格中的行

时间:2013-03-13 23:13:26

标签: excel-vba extract cell vba excel

我在单元格中有信息,我只想提取它的某些部分。 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。

希望我提供的信息足够。

欢呼声 杰弗里

2 个答案:

答案 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