摘要:我的公司有两个不同的电子表格,每个电子表格都有许多政策。他们希望我通过策略 ID 匹配策略,并将所有旧笔记从旧电子表格转移到新电子表格。
推理:我的问题不是不了解如何做到这一点,而是做到这一点的最佳方法。自从加入 StackOverflow 以来,我一直被告知我应该做和不应该做的事情。我曾多次被告知最好使用For Each
循环而不是简单的Do
循环。另外,有人告诉我我不应该.Select
大量使用(但我确实这样做了)。
我通常会怎么做:我通常只使用Do
循环并浏览数据,只是选择使用.Find
和使用的数据ActiveCell
,当我想与当前行中的其他列交互时,我只会使用ActiveCell.Offset()
. 我倾向于一直喜欢.Select
并使用它,但是在这个项目中,我试图让自己跳出框框,也许会改变一些不好的编码习惯并开始使用可能更好的东西。
问题:ActiveCell.Offset()
当我使用For Each
循环时,我将如何去做相当于 an 的事情?
到目前为止我的代码: **欢迎提出问题/批评
Sub NoteTransfer()
transferNotes
End Sub
Function transferNotes()
Dim theColumn As Range
Dim fromSheet As Worksheet
Dim toSheet As Worksheet
Dim cell As Range
Dim lastRow As Integer
Set fromSheet = Sheets("NotesFrom")
Set toSheet = Sheets("NotesTo")
With fromSheet 'FINDING LAST ROW
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row
End With
Set theColumn = fromSheet.Range("B5:B" & lastRow)
For Each cell In theColumn 'CODE FOR EACH CELL IN COLUMN
If cell.Text = "" Then
'do nothing
Else
With toSheet 'WANT TO FIND DATA ON THE toSheet
Cells.find(What:=cell.Text, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
End With
End If
Next cell
End Function
例子
工作表底部