给定多列,在 Excel 中的特定位置插入值

给定多列,在 Excel 中的特定位置插入值

以前,我认为将原来的问题简化为一个更简单的问题会有所帮助,因此我问了这个问题:给定两列,在 Excel 中的特定位置插入值

事实证明,我原来的问题仍未解决。

以下是我原来的问题的情况:

在此处输入图片描述

列中的所有重复House表示成员属于同一学院。每个成员都有一个Preference,其顺序在列中给出PreferencesOrder。第四列HouseID可以忽略;我将其包括在内,认为它可能对回答我的问题有用。

每列都有 10000 个值。

偏好类型共有 8 种,因此偏好的顺序可以取 1 至 8 之间的任意值。

现在,我想要的是以下结果。

在此处输入图片描述

我使用了以下命令

=IFERROR(INDEX($B$2:$B$10000, SMALL(IF($D2=$A$2:$A$10000, ROW($A$2:$A$10000)-MIN(ROW($A$2:$A$10000))+1, ""), E$1)),0)

这不考虑偏好的排序,因此给出以下输出

在此处输入图片描述

这不是我想要的;它忽略了偏好的排序。我该如何修改代码来考虑偏好的排序?或者我该如何更有效地做到这一点?

答案1

如果您有 Office 365,并且如果您的输入所期望的输出不正确,并且您House ID在输出中标记的列实际上是House,那么您可以使用以下公式:

H2: =IFERROR(FILTER(Pref[[Preferences]:[Preferences]],(Pref[[House]:[House]]=$G2)*(Pref[[Preferences Rank]:[Preferences Rank]]=COLUMNS($A:A))),0)

然后向下和向内填充以填满表格

如果您有早期版本,则可以使用:

=IFERROR(INDEX(Pref[[Preferences]:[Preferences]],AGGREGATE(14,6,1/((Pref[[House]:[House]]=$G2)*(Pref[[Preferences Rank]:[Preferences Rank]]=COLUMNS($A:A)))*ROW(Pref),1)-ROW(Pref[#Headers])),0)

请注意,我将您的“原始问题”表命名为Pref,并且我正在使用结构化引用,但如果您愿意,可以将其更改为常规寻址。

输入
在此处输入图片描述

输出
在此处输入图片描述

相关内容