Excel / GSpreadsheets:基于列表中包含的单词查找返回值

时间:2015-05-04 18:07:58

标签: excel google-sheets excel-formula

这是我的数据:

Sheet 1中:

   A                      B
PUMPKIN CAFE          (formula)
TESCO STORES 5555     (formula)
THE WINDSOR CASTLE    (formula)
TESCO STORES 2344     (formula)
THE WINDSOR CASTLE    (formula)

Sheet 2中:

   A                     B
CAFE                  Eating out
TESCO                 Eating in 
WINDSOR               Eating out

现在,我的问题是:

如何在Sheet1上创建一个公式,根据Sheet1上的ColumnA是否包含Sheet2上ColumnA中的任何实例,在Sheet2上返回ColumnB的对应值?

我已经围成一圈,从MATCH到ISERROR和SEARCH,但似乎无法破解它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

假设您的第一位数据位于Sheet1而您的第二位(您正在查找)位于Sheet2,则以下内容将起作用:

=INDEX(Sheet2!$B$1:$B$3,SUMPRODUCT((NOT(ISERROR(SEARCH(Sheet2!$A$1:$A$3,Sheet1!A1))))*ROW(Sheet2!$A$1:$A$3)))

重要的一点是Sumproduct公式。 Sumproduct将比较每行中多个条件的数据行。如果特定行的所有条件都为真,则它将总和一个值。

在这种情况下,标准是NOT(ISERROR(SEARCH()))位。在SEARCH()带回来的情况下,这将返回TRUE。

Sumproduct()然后使用该条件为真的ROW()公式将行号相加。因为只有一行可能是真的,所以它只添加一行..所以这就行了。

然后,INDEX()公式只会从B列中获取Sumproduct返回的行的信息。

一个警告..如果Sheet2中的Sheet1中有一个以上的匹配位置sheet2中的一个餐厅位置,那么B中的行将被添加,而table.setStyleName("no-vertical-lines-or-border"); 中的行将从 .v-table-no-vertical-lines-or-border .v-table-header-wrap /* remove header-table borders */, .v-table-no-vertical-lines-or-border .v-table-body /* remove body-table borders */, .v-table-no-vertical-lines-or-border .v-table-cell-content /* remove cell borders */ { border: none; } 返回1}}会错的。