创建一个将在工作表A中取cell.value
(字符串)的宏,然后转到工作表B,使用cells.find
方法找到与该字符串匹配的单元格。
示例
SheetA.activecell.value = "Harry Potter"
set myvar = SheetA.activecell.value
sheetB.select
Cells.Find(What:=myvar, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select
假设上述语法正确,将自动选择工作表A中包含字符串“Harry Potter”的单元格。
这就是我的问题所在。我想循环遍历整个列,为列中的每个单元格执行Cells.Find
函数。
例如,SheetA.cells(3 ,1)
包含“哈利波特”。在每次循环完成时使用偏移函数,包含要找到的值的单元格将偏移1行。
因此,在循环的下一次迭代中,SheetA中的Cells(4, 1)
将包含要在cells.find
函数中使用的值。
说,该值是字符串“Iphone Charger”。然后,cell.find(what:= myvar(基本上是myvar =“Iphone Charger”)将在工作表B中执行。
依次在工作表A中的列。
其次,我想在工作表A中复制某些值。
场景:
If "Harry Potter" is found in sheetA then
Do an `activecell.offset` function to copy some values in the same row as the cell in sheet A and
Copy those values to worksheet B using Copy destination
Else if "Harry Potter" can be found then
Jump to the next cell value.
End if
Keep looping until worksheet B hits an empty cell, that is cells(X , 1).value = ""
Then the whole macro ends
一直在杀死我的脑细胞来解决这个问题,如果你们这个论坛的任何人能帮助我,我将不胜感激。
答案 0 :(得分:0)
我建议在单元格上使用For Each
构造作为主循环,并在工作表A中找到值。在伪代码中:
For each cell in column A of sheet A
With the sheet B range to look in
If cell value is ""
Exit the sub
Else
result = .find the cell value
If the find is successful ("Not result is nothing")
Copy sheetA.cells(cell.row, <column of interest>) to sheet B
Copy ... (cell.row,<another column of interest>) ...
End the If
End the if
End the with
Next cell
请注意,这仅查找工作表A的A列中每个值的一个实例。
正如Jaycal所说,你需要使用FindNext在第一个实例之后找到其他实例。
基本思想是找到第一个实例并保存其地址,然后使用带有FindNext的do循环来查找更多实例。 do循环继续执行,直到FindNext找到与您为找到的第一个实例保存的地址具有相同地址的单元格。
有关此问题的代码示例,请参阅可在网络上找到的许多其他内容中的this explananation或this one。