拖动公式更改行参考,而不是列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)
作为我们的k
, COLUMN(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将放在公式的周围。