Excel 如何修改此代码以搜索60000行并在相邻列中粘贴1700个找到的值

Excel 如何修改此代码以搜索60000行并在相邻列中粘贴1700个找到的值,excel,vba,Excel,Vba,我是excel Visual Basic宏编程新手,尝试创建一个查找/复制/粘贴宏,该宏将搜索a列中的“$”(该列有60000行(带间断空格))。我发现A列中有1700处出现的“$”必须粘贴到相邻的B列中,以便在A列的每个单元格中找到数据 以下是我到目前为止的情况: Sub FindAValue() ' 'This macro finds the value and paste to a single cell ' ' Selection.Find(What:="$", After:=Acti

我是excel Visual Basic宏编程新手,尝试创建一个查找/复制/粘贴宏,该宏将搜索a列中的“$”(该列有60000行(带间断空格))。我发现A列中有1700处出现的“$”必须粘贴到相邻的B列中,以便在A列的每个单元格中找到数据

以下是我到目前为止的情况:

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的所有内容,找到“$”的每一个匹配项,并将其粘贴到ColumnB中ColumnA每一行的旁边,直到找到空白为止。1700“$”值中的每一个都是唯一的,后续单元格的数量也会变化,最多可达60000行(包括空格)。非常感谢您的帮助。

我想您正在寻找类似的内容

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
Public Const DATACOL=1
公共常数DESTCOL=2
分项开支()
'设置初始行值
行=1
'迭代直到找到空白
执行While单元格(行、数据列)”
'每个数据单元都是$
'instr以数字形式返回搜索字符串的位置
'如果找不到,将返回0
如果InStr(1,单元格(行,数据列),“$”>0,则
'复制数据
单元格(行,数据列)=单元格(行,数据列)
如果结束
“下一排
行=行+1
环
端接头

不清楚为什么需要VBA。如果使用B列中的公式
=IFERROR(查找(“$”,A1),“”)
(并用A列中的第一个单元格替换
A1
)然后将公式向下复制,您将看到所有出现的情况?Cjrh:感谢您的回复,我被告知使用VBA宏是完成此任务的最简单方法。尽管如此,我尝试了您的建议,但没有收到预期的回复。我复制了如图所示的代码,只更改了列引用以匹配我的shee而实际结果只在a列中包含$的相邻行的b列中显示一个数字1。我需要它将该单元格的内容复制到b列的相邻单元格中。我想我本可以让这一部分更清楚。我的意思是让您对公式有一个基本的了解。试试这个:
=IF(IFERROR(FIND($),A1),0)>0,A1,“”