2009年11月10日 星期二

VBA:快速尋找

Sub xfind()
'
' 在本分頁中順序讀取員工編號,
' 於「直式更表」中尋找相關員工。
' 由於是兩欄式更表,故要 find 兩次,
' 找到後,以 offset 取回值然後寫入。
'

' 取得A欄的行數
k = ActiveSheet.Range("A65536").End(xlUp).Row

' 設定迴圈
For i = 1 To k

 ' 讀取員工編號
 ID = Cells(i, "a").Value

 '開始 find ,分兩欄取值 c d
 With Worksheets("直式更表")
    Set c = .Range("F:F").Find(ID, LookIn:=xlValues)
    Set d = .Range("H:H").Find(ID, LookIn:=xlValues)
 End With

 ' 如 c 有值則直接寫入
 If Not c Is Nothing Then
   Cells(i, "H") = c.Offset(, -1)

 ' 如 c 沒有值,再 find 第二欄,找到則直接寫入
 ElseIf Not d Is Nothing Then
   Cells(i, "H") = d.Offset(, -3)
 Else
   ' 如仍沒有值,則寫入「找不到」
   Cells(i, "H") = "找不到"
 End If

Next i

End Sub

 
 
 
 

沒有留言: