我希望有人可以提供帮助。我正在比较主表和本地表之间的产品价格。当价格不匹配时,我需要标记。主表包含所有可能的产品,但本地表没有,所以首先我需要根据产品代码匹配产品,然后根据结果匹配价格。虽然我很乐意接受建议,但VLookup并没有把我带到我想去的地方,所以我尝试了以下代码:
Sub match_price()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ActiveSheet
Set ws2 = Worksheets("master")
For Each i In ws1.Range("A2:A100")
For Each C In ws2.Range("A2:A75")
If i.Cells.Value = C.Cells.Value Then
ws1.Range("C2:C10").Select
End If
Next C
Next i
For Each i In ws1.Range("C2:C100")
For Each C In ws2.Range("C2:C75")
If i.Cells.Value < C.Cells.Value Then
i.Cells.Interior.ColorIndex = 3
End If
Next C
Next i
End Sub
但是,我的解决方案并没有意识到这些差异,我怀疑这是因为它并没有完全认识到差异应该只基于匹配的产品。感谢任何帮助,提前谢谢。
修改
SAMPLE DATA
Master Sheet
ID Descrip Invoice
14562738 A 119
25364058 B 245
26584024 C 375
67489542 D 19
Local Sheet
ID Descrip Invoice
14562738 A 115
25364058 B 240
67489542 D 19
编辑2:我的决议:
如果有人感兴趣,我用Vlookup代码记录了一个宏,并为标记添加了user2140261条件格式。我只是想突出显示文本,所以我删除了单元格本身的颜色。我应该提到我需要使用VBA,因为我需要在许多单元格和工作表中进行其他类型的计算,但是用户2140261突出显示解决方案帮助我将Vlookup带到了我需要的位置。谢谢你的帮助!
Sub Macro()
'
'I always select D2 as the default active cell.
Range("D2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],master,3,FALSE)"
Selection.AutoFill Destination:=Range("D2:D10"), Type:=xlFillDefault
Range("C2:C10").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=D2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
答案 0 :(得分:0)
=VLOOKUP(A2,Master!A2:C5,3,FALSE)
根据您的Sample调整范围到套件。在本地工作表的D列中输入,然后向下拖动。然后突出显示使用条件格式,其中C中的值是&lt; D中的值
以下是您的样本数据的副本。在工作表本地。
在图片中,您可以看到VLOOKUP返回匹配行的所有值。
要突出显示这些值,您需要使用条件格式:
请注意,在SCreen镜头中,您必须选择要突出显示的所有数据。然后在公式框中输入
=D2
确保如果您尝试点击单元格D2并且公式变为=$D$2
那么您 必须 删除Doller标志($
)
您的最终数据如下所示:
115
和240
都是红色的,因为它们小于从主表格中获取的值。并且19
不是因为它只等于主表单中的值
从你的编辑到你的问题,我认为你可以稍微缩短宏,这也会加速你应该尽量避免使用select函数。虽然VBA中存在一个奇怪的错误,但无论您如何在VBA中输入单元格引用,它总是被视为行列引用,而不是实际引用。尽管如此,这应该可以清理你的例子,并且如果将来你在更大规模上使用它,也可以帮助提高速度。
Sub Macro()
Range("D2:D10").FormulaR1C1 = "=VLOOKUP(RC[-3],master,3,FALSE)"
With Range("C2:C10")
.Select
.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=D2"
.FormatConditions(1).Font.Color = -16383844
End With
End Sub