VBA – 基于Excel中两个不同工作表中的值查找最大百分比变化?
我一直在盯着这个这么长时间,我真的不知道该怎么做。 假设我有Sheet1,其中2016年1月的A列中有员工ID,B列中有Salary,而Sheet2上2016年12月A和B列中的员工ID和薪金。 我将如何去写一个for循环,find基于雇主ID的最大薪酬差异? 我需要使用某种forms的Vlookup,因为它们不完全匹配。
目前,这是我所拥有的:
Sub Max_Percent_Change() Dim Salary For Each Cell In Worksheets("Sheet1").Range("A2:A1000") Salary = Application.WorksheetFunction.VLookup(Cell, _ Worksheets("Sheet2").Range("A2:B1000"), 2, False)
如果数据设置如图所示,请给这个尝试…
如果需要在代码中更改工作表名称。
Sub FindSalaryPercentageChange() Dim wsJan As Worksheet, wsDec As Worksheet Dim x, y, z() Dim i As Long Dim janSalary As Double, decSalary As Double Dim pChng As Double Dim r Application.ScreenUpdating = False Set wsJan = Sheets("January16") Set wsDec = Sheets("December16") x = wsJan.Range("A1").CurrentRegion.Value y = wsDec.Range("A1").CurrentRegion.Value ReDim z(1 To UBound(x, 1) - 1) wsDec.Columns("C").Clear For i = 2 To UBound(y, 1) r = Application.Match(y(i, 1), Application.Index(x, , 1), 0) If Not IsError(r) Then janSalary = x(r, 2) decSalary = y(i, 2) pChng = (decSalary - janSalary) / janSalary z(i - 1) = pChng End If Next i wsDec.Range("C1").Value = "%Change" wsDec.Range("C2").Resize(UBound(z)).Value = Application.Transpose(z) wsDec.Columns(3).NumberFormat = "0.00%" Application.ScreenUpdating = True End Sub
1月16日数据:
December16数据: