VBA-基于两个标准查找值

VBA-基于两个标准查找值,vba,excel,if-statement,Vba,Excel,If Statement,我正在寻找一种基于两个动态值/条件创建搜索函数的解决方案。 我有一个用户表单,有一个组合框和一个文本框 标准1来自组合框,应在(建筑材料)列中找到。 标准2是一个生命周期阶段,可以是以下至少一个或多个术语:“A1-A3、A4、C1、C2、C3、C4、D”。可在(列模块)中找到 代码的功能应该是根据建筑材料和生命周期阶段确定全球变暖潜能值(GWP)(见数据表中的绿色方框)。找到此值后,应将其填充到userform内的文本框中 我的数据表截图和示例: 假设建筑材料“Argeton”是从组合框中选择

我正在寻找一种基于两个动态值/条件创建搜索函数的解决方案。 我有一个用户表单,有一个组合框和一个文本框

标准1来自组合框,应在(建筑材料)列中找到。 标准2是一个生命周期阶段,可以是以下至少一个或多个术语:“A1-A3、A4、C1、C2、C3、C4、D”。可在(列模块)中找到

代码的功能应该是根据建筑材料和生命周期阶段确定全球变暖潜能值(GWP)(见数据表中的绿色方框)。找到此值后,应将其填充到userform内的文本框中

我的数据表截图和示例:

假设建筑材料“Argeton”是从组合框中选择的。 这种材料有多个条目和不同的阶段,导致全球变暖的可能性。 现在我想知道例如“Argeton”的阶段“A4”的GWP值

到目前为止,我的想法是使用if-and-then语句:

Dim zelle As String
Dim zelleGWPA4 As Range
Set zelle = Columns(3).Find(what:=cmb_Datensatz.Text, lookat:=xlWhole)
Set zelleGWPA4 = Columns(11).Find(what:="A4", lookat:=xlWhole)

If zelle = cmb_Datensatz.value Then zelle.Offset(0, 8).Select
....
在这一点上,我不知道如何继续下去。由于我现在只检测到橙色单元格(见数据表),所以我的想法是向下搜索并查找术语“A4”,而建筑材料仍然是“Agreton”。 一旦两个条件均为真,则转到偏移量(0,1)并在txt_GWP_A4中填充此单元格的值

也许有更好更简单的方法可以做到这一点。我愿意接受任何其他想法,并感谢您的帮助!

您可以尝试:

  • 在datatable中插入名为“SearchIndex”的新列
  • 列SearchIndex的值将是连接 要搜索的条件列的值,以分隔 分号、管道或空格
  • Set zelle=Columns(SearchIndex列)。Find(what:=cmb\u Datensatz.Text &“| A4”,注视:=xlother)
图像中的数据示例

。。。
很可能您希望使用“worker.listobjects”。这可以帮助您使用列引用。

如果您的数据上已经有过滤器,那么过滤建筑材料和模块以及查找列GWP中的可见单元格可能会更容易。谢谢。这非常有用。语法现在就可以了。但是,因为我想每个生命周期阶段(7)和环境影响类别(6)的检测值,代码(RANGE.Autofilter)正在运行42次。然后速度变慢。还有其他想法吗?您是否已经使用
Application.screenUpdate=False
Application.Calculation=xlCalculationManual
进行了测试?如果没有,请确保重新打开它们以获取更多信息。