我希望您能指导我解答疑问。
我正在工作表“仪表板”中搜索多个项目,其信息记录在工作表“原始数据”中的表 1 中。我要求在单元格 C2 中选择另一个可用类别执行新搜索时,在单元格范围 (C3:C5) 中分别显示选项 --选择描述--、--选择品牌-- 和 --选择尺寸/型号--。
此外,在单元格区域 (C7:C10) 中,出现了选项 --重新选择条件--。我已经借助以下宏实现了这一点。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
Range("C3") = "--Choose Description--"
Range("C4") = "--Choose Brand--"
Range("C5") = "--Choose Size/Model--"
End If
If Target.Address = "$C$5" Then
Range("C7") = "<Reselect criteria>"
Range("C8") = "<Reselect criteria>"
Range("C9") = "<Reselect criteria>"
Range("C10") = "<Reselect criteria>"
End If
End Sub
一旦在单元格 C2 中设置了值,单元格 C3:C5 中的值将按其顺序出现,与单元格 C2 中选择的搜索条件相对应。
但是,我无法将单元格 C2:C5 中输入的搜索条件对应的值记录到单元格 C7:C10 中,相反,我一直得到“--重新选择条件--”的值,而无法修改它们。
我需要修改代码,以便让我在单元格 C7:C10 中记录与单元格 C2:C5 中选择的搜索条件相对应的数据,从而返回单元格 D7:D10 中记录的搜索值。
我在工作表“仪表板”中输入的公式运行良好,但问题出在 VBE 代码中,因为它只允许我获得单元格 C3:C5 的结果,而对于单元格 C7:C10,一旦我输入了单元格 C3:C5 中的值,它就不允许我执行任何计算。
我希望我知道如何传达我在搜索中所需要的信息,非常感谢您的宝贵关注。
pdt:在链接附加文件中,您可以找到包含图像中显示的数据的工作簿。
答案1
我对您的代码和公式做了一些快速更改。对于您工作簿中找到的公式,如 D7:D10 所示#NA
,它们的公式现在包含IFERROR
函数。例如,D7 的公式现在是:
=IFERROR(INDEX(Tabla1[Cost per hr ($)],MATCH($C$2&$C$3&$C$4&$C$5,Tabla1[Category]&Tabla1[Description]&Tabla1[Brand]&Tabla1[Size/Model],0)),"")
这些更改允许测试代码中的 D7:D7 是否为文本。如果是文本,则显示消息<Reselect criteria>
。如果不是,则显示成本值。您的代码将如下所示。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
Range("C3") = "--Choose Description--"
Range("C4") = "--Choose Brand--"
Range("C5") = "--Choose Size/Model--"
Range("C7:C10") = "<Reselect criteria>"
End If
Application.EnableEvents = False
If WorksheetFunction.IsText(Range("d7")) Then 'Check if D7 is text
Range("C7:C10") = "<Reselect criteria>"
Else 'If D7 is not text
If Target.Address = "$C$5" Then
Range("C7:C10").Value = Range("d7:d10").Value
End If
End If
Application.EnableEvents = True
End Sub
请注意,我在测试 D7 之前已将其禁用Application.EnableEvents
,然后在完成后重新启用它。这是我用来避免错误消息的快捷方式。您可以删除它们并添加更好的错误处理。
您必须根据您的实际数据调整代码并对其进行改进。