2013-03-13 75 views
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 

以上内容均属于单元格内。我想仅提取不同意这个或启动线-----或如何

也就是3号线 即行8 我想这太行

所以当我运行VBA或宏我会结束3行。

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

所以我想截断掉以---或This或That开头的行,但保留其他东西。

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

希望我提供的信息足够。

欢呼 杰弗里

+0

您是否尝试过的东西了吗? – raybiss 2013-03-13 23:19:56

+0

我建议你循环通过每个单元格,看看每个单元格的内容将它分成一个基于CR的数组评估第一个字符,如果 - 将数组设置为“”如果前4个字符是“this”,则设置数组到“”,然后循环数组,将excel单元设置为数组中的值。建议是我所提供的所有代码示例 – xQbert 2013-03-13 23:23:57

回答

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 
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 
+0

@ user2167651如果它适合您,请接受答案............. – krishna 2013-03-19 03:53:49