2017-05-05 39 views
0

我有一個完整的多行的單個細胞內像下面數據的列中的單元的整個值:選擇使用VBA

image

我循環通過在列中的所有單元和I具有選擇每個單元格內的值並在另一個表格中進行搜索。我知道我可以使用vba中的Split()函數來分割單元格值。

但是我碰到的是我無法選擇單元格的整個值並將其解析爲split()函數的輸入。下面是我在哪裏打我的示例代碼:

For Each C in Range ("A1:A" & ltrow) 
    If C.Value <> "" Then 
     SrcStrng = C.Value 
     TextArray() = Split(SrcStrng) 
     ..... 
     ........ 
..... 

我在這裏面臨的問題是在SrcStrng只有第一個值只有T#234在第一小區的小區,例如內部獲得存儲,所以在分割字符串只有通過並且不能正確分割,所以我無法搜索t * 567。它發生在每個細胞。

而且在第三個單元格中,我只想解析搜索循環內的值t#345,忽略L1 :,我也對此感到震驚。

有人可以幫我這個請。

+0

如何Dim TextArray?你應該「Dim TextArray()String」。然後,當您使用Split時,請執行「TextArray = Split(SrcStrng)」 –

+0

此外,如果您將列寬度變得更寬(在Excel中拖動列的右側),那麼您的值是否仍然出現在單獨的行中,或者他們最終在一行上有多個值? –

+0

@RichHolton我確實將TextArray()聲明爲字符串,第二行中的文本是在單元格內的新行中使用「Alt + enter」輸入的。 – S6633d

回答

1

下面是一個例子來說明如何做到這一點。使用chr(10)作爲分隔符

Sub t() 
    Dim str As String 
    str = Range("A1").Value 

    Dim parts As Variant 
    parts = Split(str, Chr(10)) 

    For i = LBound(parts) To UBound(parts) 
     MsgBox (parts(i)) 
    Next i 
End Sub 
+0

VBA具有內置的換行'vbLf'常量,這使得代碼更具可讀性並且比使用具有幻數的'Chr'功能更快。 – ThunderFrame

+0

@ThunderFrame chr(10)表示只有10個字符可以分割出來嗎? – S6633d

+0

@ S6633d No. Chr(10)是一個函數,它返回一個字符的字符串 - 該字符的ASCII代碼爲10.這是一個稱爲LineFeed的特殊字符。當您按Alt + Enter鍵時,這是插入Excel單元格中字符的字符。 Split中的第二個參數是您想要分割的字符。如果你沒有指定它,它默認爲空白(或空格),你可以像這樣指定:「」,或者使用Char(32)。你會希望像上面那樣使用分割,就像nightcrawler23一樣。 –