拖动公式更改行引用而不是列 Excel
Drag Formula change Row reference instead of Column Excel
我有一个与喜欢他们的人相关联的事物的数据库,如下例所示:
这个SHEET名字是SHEET1
在另一个 sheet 中,我试图按喜欢它们的每个人对事物进行排序。
在第二个 sheet 中,我需要检查以确保单元格不为空(因为另一个用户输入可能会添加其他人)。如果单元格中有一个人的名字,我需要循环遍历数据库中的所有内容,看看那个人的名字是否出现在它旁边。
如果是的话,那我要return所有自己喜欢的东西,如下图绿色所示:
这个SHEET名字是SHEET2
我知道我需要使用 OFFSET 函数,但正如我现在写的那样,它不起作用。非常感谢任何帮助!
我的功能如下。这将是 SHEET 2 中 B2 的一个函数。我希望能够将此函数拖动到右侧(从 B2 到 F2)并获得如上图绿色所示的输出。
=IF(COUNTIF(OFFSET(sheet1!$B:$F, 0, COLUMN()-2) $A), OFFSET(sheet1!A2, 0, COLUMN() -2), " ")
我目前收到一条错误消息,指出我的参数太少。但是,我想我正在尝试做的事情还有其他问题......非常感谢任何帮助
SHEET 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
SHEET 2(未解决)数据:
Favorite Things
Person 1
Person 2
Person 3
Person 4
Person 5
Person 6
我会使用 SMALL(IF()) 样式公式。
如果您有 2010 或更高版本,则可以使用 AGGREGATE() 函数轻松完成:
=IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(15,6,(ROW(Sheet1!$B:$D)-1)/(Sheet1!$B:$D=$A2),COLUMN(A:A))),"")
所以这些公式的作用是使用 SMALL() 公式。小公式就是这样设置的SMALL(Range,k)
。 k
是实例,如果 k 为 3,那么它将 return 第三小。
由于我们使用 COLUMN(A:A)
作为我们的 k
,因此每次向右填充时,由 COLUMN(A:A)
编辑的数字 return 都会增加 1。因此给了我们第 1 个列表,然后是第 2 个然后是第 3 个...
传递给 INDEX 的就是这个数字。
如果你不这样做,那么使用这个数组公式:
=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$B:$D=$A2,(ROW(Sheet1!$B:$D)-1)),COLUMN(A:A))),"")
作为数组公式,在离开编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。如果操作正确,excel 将在公式周围放置 {}
。
我有一个与喜欢他们的人相关联的事物的数据库,如下例所示:
这个SHEET名字是SHEET1
在另一个 sheet 中,我试图按喜欢它们的每个人对事物进行排序。
在第二个 sheet 中,我需要检查以确保单元格不为空(因为另一个用户输入可能会添加其他人)。如果单元格中有一个人的名字,我需要循环遍历数据库中的所有内容,看看那个人的名字是否出现在它旁边。
如果是的话,那我要return所有自己喜欢的东西,如下图绿色所示:
这个SHEET名字是SHEET2
我知道我需要使用 OFFSET 函数,但正如我现在写的那样,它不起作用。非常感谢任何帮助!
我的功能如下。这将是 SHEET 2 中 B2 的一个函数。我希望能够将此函数拖动到右侧(从 B2 到 F2)并获得如上图绿色所示的输出。
=IF(COUNTIF(OFFSET(sheet1!$B:$F, 0, COLUMN()-2) $A), OFFSET(sheet1!A2, 0, COLUMN() -2), " ")
我目前收到一条错误消息,指出我的参数太少。但是,我想我正在尝试做的事情还有其他问题......非常感谢任何帮助
SHEET 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
SHEET 2(未解决)数据:
Favorite Things
Person 1
Person 2
Person 3
Person 4
Person 5
Person 6
我会使用 SMALL(IF()) 样式公式。
如果您有 2010 或更高版本,则可以使用 AGGREGATE() 函数轻松完成:
=IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(15,6,(ROW(Sheet1!$B:$D)-1)/(Sheet1!$B:$D=$A2),COLUMN(A:A))),"")
所以这些公式的作用是使用 SMALL() 公式。小公式就是这样设置的SMALL(Range,k)
。 k
是实例,如果 k 为 3,那么它将 return 第三小。
由于我们使用 COLUMN(A:A)
作为我们的 k
,因此每次向右填充时,由 COLUMN(A:A)
编辑的数字 return 都会增加 1。因此给了我们第 1 个列表,然后是第 2 个然后是第 3 个...
传递给 INDEX 的就是这个数字。
如果你不这样做,那么使用这个数组公式:
=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$B:$D=$A2,(ROW(Sheet1!$B:$D)-1)),COLUMN(A:A))),"")
作为数组公式,在离开编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。如果操作正确,excel 将在公式周围放置 {}
。