2016-11-09 32 views
0

我有輸入數據是這樣的:VBA搜索列中的值之後特定圖案

gen,N,,,GONGD,,,N,,,KL,0007bd,,,,,,,,TAK, 
gen,N,,,RATEC,,,N,,,KP,0007bc,,,,,,,,TAZ, 
kap,N,,,EBFWE,N,,,,,,,,,KP,002bd4,,,KP,123000,,,,,N,,,,P 
kap,N,,,ST,WEIT,E3,EBFWEI,,,KP,002bd2,N,,,,,,KP,002bd3,,,,,,,Z,MG00,,,,,N,,,,P 

一行是在一列。首先我需要知道我連續以「kap」開頭,然後我需要在第一個「KP」之後保存6個字符(或數字)作爲「變量1」並保存6個字符或數字在第二個「 ,KP「,如」Variable2「。請幫助我,我無望。

預期結果:對於第一個「kap」行,Var1 = 002bd4,Var2 = 123000。 VAR3 = 002bd2,VAR4 = 002bd3

我曾經嘗試這樣做就知道我在 「KAP」 起跑線:

Sub Find() 
Dim rFoundAddress As Range 
Dim sFirstAddress As String 
Dim x As Long 

With ThisWorkbook.Worksheets("Sheet1").Columns(1) 
    Set rFoundAddress = .Find("kap,*", LookIn:=xlValues, LookAt:=xlWhole) 
    If Not rFoundAddress Is Nothing Then 
     sFirstAddress = rFoundAddress.Address 
     Do 


      Set rFoundAddress = .FindNext(rFoundAddress) 
     Loop While Not rFoundAddress Is Nothing And _ 
      rFoundAddress.Address <> sFirstAddress 
    End If 
End With 
End Sub 

謝謝!

+0

什麼都有「MSZ,*」你對做「KAP搜索在希望值「和」KP「? – user3598756

+0

看看'Split'或者更好的方法,正則表達式,先用逗號分割找到第一個元素,然後再用「KP」分割,也許作爲第一個元素的數字 –

+0

@ user3598756我的錯誤,我編輯過它。謝謝。 –

回答

1

試試這個

Sub Find() 
    Dim rFound As Range 
    Dim sFirstAddress As String 
    Dim vals As Variant 

    With ThisWorkbook.Worksheets("Sheet1").Columns(1) 
     Set rFound = .Find("*kap,*", LookIn:=xlValues, LookAt:=xlWhole) 
     If Not rFound Is Nothing Then 
      sFirstAddress = rFound.Address 
      Do 
       vals = Split(Split(Split(rFound.text, "KP")(1), ",")(1) & "," & Split(Split(rFound.text, "KP")(2), ",")(1), ",") 
       Set rFound = .FindNext(rFound) 
      Loop While rFound.Address <> sFirstAddress 
     End If 
    End With 
End Sub 

,其中在每一行you'l得到vals陣列中存儲兩個該行

+0

我無法正確格式化。但我已經使用這個代碼。你的人可能也在工作。無論如何,感謝您的幫助! '昏暗WrdArray()作爲字符串 昏暗text_string的作爲字符串 text_string的= rFoundAddress WrdArray()=分段(text_string的, 「KP」) STRG =左(WrdArray(1),6)&vbNewLine&左(WrdArray( 2),6) MsgBox strg' –

+0

歡迎您。順便說一句,我沒有得到什麼格式問題,你可以有:我的代碼返回兩個元素的數組('vals'),所以你可以檢索它的元素爲'vals(1)'和'vals(2)',然後做你想要的東西 – user3598756

+0

不,我的意思是我不能正確格式化答覆評論:D代碼工作,再次感謝 –