2013-03-13 100 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