拖动公式更改行参考,而不是列Excel

我有一个与喜欢它们的人有关的数据库,如下所示:

这张纸的名字是1

当前数据库的图像

在另一张表中,我试图按照每个喜欢他们的人来分类。

在第二个工作表中,我需要检查以确保单元格不是空白的(因为另一个用户input可能会增加额外的人员)。 如果单元格中有一个人的名字,我需要循环查看数据库中的所有内容,看看这个人的名字是否出现在旁边。

如果确实如此,那么我希望它能够返回所有他们喜欢的东西,如下面的GREEN所示:

这张纸是名单2 数据库后功能的图像

我知道我需要使用OFFSETfunction,但正如我现在写的,它不工作。 任何帮助,非常感谢它!

我的function如下。 这将是SHEET 2中的B2函数。我希望能够将该函数拖到右侧(从B2到F2),并具有如上面绿色所示的输出。

=IF(COUNTIF(OFFSET(sheet1!$B$2:$F$2, 0, COLUMN()-2) $A$2), OFFSET(sheet1!A2, 0, COLUMN() -2), " ") 

我目前收到一个错误消息,我有太less的参数。 不过,我想像有什么是我正在尝试做的错误…任何帮助是非常赞赏

表1数据:

 Things People Who Like The Thing Potatoes Person 3 Person 6 Cats Person 1 Person 4 Person 6 Mice Person 2 Person 6 Green Person 2 Person 6 Wine Person 1 Person 5 Person 6 Chicken Person 1 Person 6 Dogs Person 1 Person 4 Person 6 Flowers Person 2 Person 5 Person 6 Chair Person 3 Person 6 Shirts Person 4 Person 6 

表2(未解决)数据:

  Favorite Things Person 1 Person 2 Person 3 Person 4 Person 5 Person 6 

我会使用小(IF())风格的公式。

如果你有2010或更高版本,那么可以使用AGGREGATE()函数轻松完成:

 =IFERROR(INDEX(Sheet1!$A$2:$A$11,AGGREGATE(15,6,(ROW(Sheet1!$B$2:$D$11)-1)/(Sheet1!$B$2:$D$11=$A2),COLUMN(A:A))),"") 

那么这些公式所做的就是使用SMALL()公式。 小公式是这样设置的SMALL(Range,k)k是实例,如果k是3,那么它将返回第三小。

由于我们使用COLUMN(A:A)作为我们的kCOLUMN(A:A)返回的数字每次向右填充时将增加1。 因此,给我们的第一名单,然后第二,然后第三…

这是传递给INDEX的这个数字。

如果你不使用这个数组公式:

 =IFERROR(INDEX(Sheet1!$A$2:$A$11,SMALL(IF(Sheet1!$B$2:$D$11=$A2,(ROW(Sheet1!$B$2:$D$11)-1)),COLUMN(A:A))),"") 

作为数组公式,在离开编辑模式而不是Enter时,必须用Ctrl-Shift-Enter确认。 如果做得正确的话,excel将放在公式的周围。

在这里输入图像说明