在字符串中找到一个单元格,然后根据该单元格填充另一个单元格

时间:2012-08-18 14:18:15

标签: excel vba search find

我有一个基本的财务电子表格,我试图做得更好。我有一张看起来像这样的表:

  

|说明|类别|量

     

| 2341234 Chick-fil-a |外出就餐| 5.89

     

| 11234 Redbox / Georgetown |娱乐| 1.21

另一张看起来像这样的表:

  

|名称|类别|

     

| Chick-fil-a |外出就餐|

     

| Redbox |娱乐|

我想在第一个表的第一列中找到第二个表的第一列中的字符串,并自动填充第一个表的第二列。我很确定我可以通过执行{= find(2ndSheet!A:A,1stSheetA:A)}或类似的东西来找到字符串的位置,但我不知道如何基于此填充另一个单元格

它必须是一个宏吗?

2 个答案:

答案 0 :(得分:2)

这有点难看,但似乎有效。它处理您的描述可能不一定与查找表匹配的情况(例如,使用Redbox | Redbox / Georgetown)。将[Lookup_Table]替换为查找表的绝对范围,并以数组公式(Control+Shift+Enter)输入:

=INDEX([Lookup_Table],MATCH(TRUE,NOT(ISERR((FIND([Lookup_Table],A2)))),0),2)

至于它在做什么:

=INDEX(
        [Lookup_Table],
        MATCH(
            TRUE,
            NOT(ISERR((FIND([Lookup_Table],A2)))),
            0),
         2)

它使用INDEX公式,以[Lookup_Table]作为基本范围。对于要匹配的行,它会查找使用当前单元格运行FIND公式不会导致错误的实例。因此,对于Redbox,您将获得类似{#VALUE!, 7}的数组。然后根据它们是否为错误将值设置为TRUE/FALSE,然后将其翻转以使非错误为True。然后,您将TRUE条件与该数组匹配,命中将返回查找表中的行号。然后使用该行号和第2列查找相应的值。

同样,这不是一个漂亮的(并且可能有更好的方法来处理所有情况),但它似乎适用于我对三行的极其详尽的测试:)

enter image description here

答案 1 :(得分:0)

假设您的第一个表格是从A列开始,则从B2开始替换此公式应为您找到该值。

=VLOOKUP(RIGHT(A2,LEN(A2)-FIND(" ",A2,1)),[Range of Helper Table],2,FALSE)

您需要将[Range of Helper Table]替换为实际范围。确保使用$使用绝对引用,例如:2ndSheet!A$2:B$20。这样你就可以复制和粘贴了。