2012-01-23 30 views
0

我是新來的excel Visual Basic宏編程新手,試圖創建一個查找/複製/粘貼宏,它將搜索「$」中的A列(有60000行(間歇空白)))。我已經能夠發現在列A中有1700次出現「$」,我必須粘貼到找到數據的列A中的每個單元格的相鄰列B中。如何修改此代碼以搜索60000行並在相鄰列中粘貼1700找到的值

這是我到目前爲止有:

Sub FindAValue() 
' 
'This macro finds the value and paste to a single cell 
' 

' 
Selection.Find(What:="$", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart 
, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
Range("A2").Select 
Selection.Copy 
Range("B2").Select 
ActiveSheet.Paste 
Application.CutCopyMode=False 
End Sub 

我從各種博客審查衆多的帖子和我仍然無法理解如何使其搜索所有ColumnA的擴展這個宏,發現每次出現「$」,然後將其粘貼到ColumnA每行旁邊的ColumnB中,直到找到空白。每個1700「$」的價值觀是獨一無二的,隨後的細胞的數量也各不相同多達60000行(包括空白。任何幫助表示讚賞。

+0

目前還不清楚爲什麼你需要VBA,如果你在列B中使用公式= = IFERROR(FIND(「$」,A1),「」)'(並用列A中的第一個單元格替換「A1」 ),然後將該公式複製到範圍內,您將看到所有發生的事件? –

+0

Cjrh:感謝您的迴應,我被告知使用VBA宏是完成此任務的最簡單方法。並沒有收到預期的響應。我複製了代碼,如圖所示只改變列引用以匹配我的工作表,並且實際結果僅在列A中包含$的相鄰行上的列b中顯示數字1(1)。我需要它將該單元格的內容複製到相鄰單元格列b。我想我可以讓這部分更清晰。 – Carter

+0

我的意思是給你一個公式的基本概念。試試這個:'= IF(IFERROR(FIND(「$」,A1),0)> 0,A1,「」)' –

回答

2

我認爲你正在尋找這樣的事情

Public Const DATACOL = 1 
Public Const DESTCOL = 2 

Sub exp() 


'set initial row value 
Row = 1 
'iterate until a blank is found 
Do While Cells(Row, DATACOL) <> "" 
    'look is each datacell for $ 
    'instr returns the location of the search string as a number 
    'and will return 0 if not found 
    If InStr(1, Cells(Row, DATACOL), "$") > 0 Then 
    'copy data 
    Cells(Row, DESTCOL) = Cells(Row, DATACOL) 
    End If 

    'next row 
    Row = Row + 1 
Loop 

End Sub 
相關問題