我有一個非常大的excel文件,其中包含員工列表,幾列薪水數據,然後分配給收集數據的財政周。VBA嵌套如果/範圍匹配
我正在嘗試搜索此數據,並且在宏中與特定會計周的員工進行匹配。我有一個解決方案,可以找到名稱,但不會打印出財政周,而且速度非常緩慢,我確信有更多的方法來完成這項簡單的任務。下面是我所擁有的,它非常簡單,最後我需要捕獲行中的數據,但現在我只是打印以獲得概念證明。
Sub loop_test()
Dim ClientTable As Range
Dim rng1 As Range, rng2 As Range, desired_emp As String, desired_fw As Integer
desired_emp = Application.InputBox("Select an Employee", Type:=8)
desired_fw = Application.InputBox("What FW would you like to do this for?", Type:=8)
Set FullName = Sheets("Query5").Range("A:A")
Set FiscalWeek = Sheets("Query5").Range("F:F")
For Each rng1 In FullName.Columns(1).Cells
If rng1.Value = desired_emp Then
matched_name = rng1.Cells.Value
For Each rng2 In FullName.Columns(1).Cells
If rng2.Value = desired_fw Then
matched_fw = rng2.Cells.Value
End If
Next
End If
Next
Range("i3").Value = matched_name
Range("j3").Value = matched_fw
End Sub
嘗試自動篩選,而不是循環。這裏是一個應該讓你開始的例子:http://stackoverflow.com/a/16901714/138938。您可以將自動過濾器的標準設置爲員工和會計周。 –
您的外部和內部循環都在搜索第一列數據。內部循環應該是'對於FiscalWeek.Cells中的每個rng2'然而,這只是在任一列中找到第一個匹配:大概他們都應該在同一行? –
變量「matched_name」和「matched_fw」是否未被調整是否重要? – Dale