2016-06-08 123 views
-1

我非常努力地將以下excel公式轉換爲VBA。下面的函數將假定需要在for循環中,並且需要下降動態列長度。我四處搜尋試圖自己編寫腳本,但我似乎無法讓它在沒有錯誤的情況下運行。將Excel公式轉換爲VBA for Mid和查找函數

= MID(A1,FIND( 「:」,A1)+ 1,FIND( 「(」,A1) - 查找( 「:」,A1)-1)

+0

你的意思是使VBA這項工作使用範圍( 「A1」)和替換INSTR MID(範圍(A1).value的,INSTR(1,範圍FIND (「a1」)。value,「:」)..... –

+0

你的標題說VB腳本,你的文字說VBA。你需要什麼? – Mono

+0

VBA,抱歉有關混淆! – Davey

回答

1

可以得到列長度(或最後一行)動態使用下列內容:?

dim ws as Worksheet 
Set ws = Thisworkbook.Worksheets("mySheetNameHere") 
dim lastRow, myLoop, semicolPos, bracketPos 
lastRow = ws.Cells(ws.rows.count, "A").End(xlUp).Row ' this gets last row in col A 

For myLoop = 1 to lastRow 
    ' Find the position of the ";" and the "(" 
    semicolPos = InStr(ws.Range("A" & myLoop).Value, ":") + 1 
    bracketPos = InStr(ws.Range("A" & myLoop).Value, "(") 
    newValue = Mid(ws.Range("A" & myLoop).Value, semicolPos, bracketPos - semicolPos) 
    ' Put newValue into column B, one cell over from column A 
    ws.Range("B" & myLoop).Value = newValue 
Next 
+0

嘿戴夫,所以可能是一個啞巴問題,但是當代碼解析A列中的單元格時,我需要輸出代碼在B1,B2等中。在上面的代碼中,「Next」之後是否使用了偏移功能? – Davey

+1

請參閱我編輯的答案,將數據放入B列 – Dave

+0

令人驚歎!謝謝戴夫!我絕對不可能自己做到這一點。對此,我真的非常感激。 – Davey