-1

我在 A 栏中有一个很大的职业清单,可以用几种方式写出来。在 BI 列中,要搜索 C 列中列出的有限职业,如果与 AI 列中的一个匹配,则希望从 D 列返回与 B 列 C 列中的职业相关联的值。因此,对于每个匹配项*teacher*我希望 1165 出现在 B 列中。对于与*driver*5468 的每次匹配。依此类推。我试图用 Vlookup 做到这一点,但它似乎无法处理这个问题。我转向以下内容:

=IF(ISNUMBER(SEARCH("teacher";A1));"1165";IF(ISNUMBER(SEARCH("driver";A1));"5468";IF(ISNUMBER(SEARCH("postman";9874));"1";" ")))

这可以解决问题,但我想知道是否有更优雅的方式?而不是把所有东西都放在很长的嵌套 if 语句中......

  A              B           C                D
Driver           ?         Teacher            1165
Teacher          ?         Driver             5468
Truckdriver      ?         Postman            9874
Works as teacher ?  
Driver           ?
Postman          ?
Works as postman ?
Teacher          ?
4

1 回答 1

0

我认为,如果您尝试严格使用公式和现在的 VBA 来执行此操作,那么您正在尝试做的事情将需要大量嵌套的 if 语句。如果你以不同的方式设置它,你可以使用 hlookup 来做到这一点。如果您想让我告诉您如何做到这一点,请发表评论并告诉我。

但是,由于您使用 excel-vba 作为标签,我相信您正在寻找 vba 解决方案。一种方法是这样的:

for each cell in range("D1:D3")
    for each cell2 in range("A1:A8")
      if cell2.value = cell.value then cell2.offset(0,1).value = cell.offset(0,1).value
    next
next

请注意,这不会是您在模块中编写的所有内容,但这是一个好的开始。此外,需要更改范围以适应实际保存值的范围。

并且偏移量假设您需要的数据是右侧的一列(例如,对于教师来说,cell.offset(0,1) 将是 1165。

于 2013-06-28T18:59:58.937 回答