excel - 在A列中查找返回预定数字的值

时间:2013-06-28 15:56:18

标签: excel excel-vba excel-2007 vba

我在A栏中列出了很多专业,可以通过多种方式编写。在列BI中,想要搜索C列中列出的有限专业,如果列中有一个匹配,AI想要从列B中的列C返回与专业相关联的列D的值。因此对于每个匹配*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          ?

1 个答案:

答案 0 :(得分:0)

我认为你要做的事情需要大量的嵌套if语句,如果你试图严格使用公式和现在的VBA。如果你设置不同,你可以使用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。