2016-12-14 212 views
0

將數據拉入Excel後,每個單元格中有一堆單元格中有兩行文本。 我想要做的是使用宏的Trim函數刪除第二行後單元格中的所有內容。 我對這個數據感到困惑,就好像你要在一個單元格中輸入數據一樣,然後進入下一個單元格,但它是一個單元格並且沒有合併。用VBA識別單元格中的第二行文本

ex。

Someone's Name [123] Procedure room, procedure done

有沒有一種方法,以確定該線路中斷?

非常感謝任何幫助,我的頭旋轉,我衝出來的一天。 歡呼聲

+1

Alt + Enter,在單元格中創建換行符。 'TRIM'不會幫助它的空間。使用替代品。像:'= SUBSTITUTE(A1,CHAR(10),「」)' – cyboashu

+0

如果你確實的意思是「在**第二行**後刪除單元格中的所有內容」,則需要對提供的答案進行一些調整。 (但希望這只是一個錯字,你的意思是「第一行」。) – YowE3K

+0

啊是的,我的意思是第二行的所有內容,所以在第一行之後。 – Awill

回答

3

只需尋找ASCII-10。選擇您想要處理和運行的單元格:

Sub KleanUp() 
    Dim r As Range 
    For Each r In Selection 
     r.Value = Split(r.Value, Chr(10))(0) 
    Next r 
End Sub 

只有第一行將保留在每個單元格中。

編輯#1:

正如拉爾夫指出,ASCII-13也應考慮,因此:

Sub KleanUp2() 
    Dim r As Range 
    For Each r In Selection 
     r.Value = Split(Replace(r.Value, Chr(13), Chr(10)), Chr(10))(0) 
    Next r 
End Sub 

把它轉換成一個單一風格的換行符。

EDIT#2:

,能夠提高副由性能:

  • 讀取數據到一個VBA陣列作爲單個大型塊
  • 通過循環array (in VBA)
  • 將數據傳回工作表中的單個塊中
+1

換行符有幾種不同的可能性。 「Chr(10)」只是其中之一。您可能希望包含'vbCrLf'和'vbNewLine',以使您的解決方案更加完整。 – Ralph

+0

@Ralph我會解決這個問題。 –

+0

第一個似乎完全適合我的意圖。編輯給了我一個錯誤'錯誤的參數數量或無效的屬性分配' 現在,花一些時間在谷歌,所以我可以理解你給我提供了什麼。非常感謝! – Awill

相關問題