1

假设我有一张包含问题编号和不同受访者的表格。例如,在表 1 中,我们有

                 Q1    Q2    Q3   Q4   Q5   Q6   Q7   Q8   Q9   Q10
  Person A       1     3     1    5    2     4   1    2     1    5
  Person B       5     1     5    1    3     3   2    5     4    3
  Person C       5     1     5    1    3     3   2    5     4    3

在表 2 上,我们有相同的设置

                 Q5    Q4    Q2   Q3   Q4   Q6   Q7   Q8   Q9   Q10
  Person A       
  Person B       
  Person C      

当我在相应的工作表 2 调用中键入以下内容时:

=vlookup(a1,Sheet1,b$1+1,0) # return value of Person A, Q1 from sheet 1

我得到的是 Person A Q6 的值。为什么?

4

2 回答 2

2

我是否正确假设您使用的是 Excel?

如果是这样,我会使用的等式是: =VLOOKUP($A2,Table1,MATCH(B$1,Sheet1!B1:K1)+1,FALSE)

您不能将整张工作表作为参数传递。你需要通过一个范围。在这里,我将其命名为 Table1。

在第三个参数中,您将 1 添加到字符串中,这会导致问题。使用 MATCH 函数获取列号。

于 2013-08-07T15:48:35.523 回答
-1

您使用 VLOOKUP 错误。

VLOOKUP 的工具提示显示括号应该是("lookup_value", "table_array", "col_index_num", "[range_lookup]").

因此,它将尝试将您的第一个变量 , 与lookup_value在您的第二个变量的第一列中找到的第一个实例table_array. 然后它返回单元格中被 -1 取代的值col_index_num(即,要返回 Q1 值,您将使用col_index_num2 的 a)。最后一部分[range_lookup]是可选的,它允许对您使用的值进行模糊匹配,这通常不是您想要的。不幸的是,这默认为TRUE(模糊匹配),您几乎总是希望将其设置为FALSE.

在您在 OP 中的示例中,您尝试将 1 添加到 B1 中找到的值,该值是一个字符串。显然,您不能将数字添加到字符串中(至少不是这种方式)。

要匹配第二个表中的表头,您将使用:

=VLOOKUP($A$2,Sheet1!$A$1:$K$4,RIGHT(B1,LEN(B1)-1)+1,FALSE)

这会将 替换为col_index_num对表头中数字的引用(它会删除第一个字符Q),然后使用它来计算要使用的列。

于 2013-08-07T15:37:37.633 回答