问题描述
我有一个表格,其中一列列出了教师姓名,后面的列是个人培训课程。我们的想法是为每门课程设置一名“首席导师”和三名其他“导师”,这些标签根据选定教师的姓名进行分配。所以它看起来像:
老师 | 培训1 | training2 | training3 |
---|---|---|---|
约翰 | 首席导师 | ||
鲍勃 | 导师 | 导师 | 导师 |
简 | 导师 | 导师 | |
爱丽丝 | 导师 | 首席导师 | |
蒂姆 | 导师 | 导师 | 导师 |
格斯 | 首席导师 |
首席导师 | 导师 | 导师 | 导师 | |
---|---|---|---|---|
培训1 | 约翰 | 鲍勃 | 爱丽丝 | 蒂姆 |
培训2 | 爱丽丝 | 鲍勃 | 简 | 蒂姆 |
培训3 | 格斯 | 鲍勃 | 简 | 蒂姆 |
我知道我需要诸如 index/match/small/if/column/row 之类的东西,但是在我在网上找到的所有示例中,我无法让它工作......
最接近我让它工作的是:
{=IFERROR(INDEX($A$2:$A$14,SMALL(IF(G$2=$B$2:$C$14,ROW($B$2:$C$14)-1,"未分配"),COLUMNS($F$3:F3))),"")}
它没有给我错误消息,但也没有给我正确的结果......!
我已将我的尝试上传到 GoogleDrive - 如果有人能阐明我做错了什么,我将不胜感激(我只在 youtube 上了解了数组和索引/聚合/匹配,但无法得到我的绕过它......!)
https://drive.google.com/file/d/1YKhKppAevNGrU_XFGe3IVNFOXynoKFiS/view?usp=sharing
提前致谢
解决方法
我选择了 2 公式方法。拥有一个公式并将其复制到整个表格会更好,但我认为这种努力不值得。因此,我有以下公式来提取首席导师。 (183)
=INDEX(Table1[Teacher],MATCH(B$11,INDIRECT("Table1["&$A12&"]"),0))
为此,我将您的第一个表格转换为涵盖 A1:D7 范围的 Excel 表格 (Table1
)。它是您表的精确副本。因此标题是“Teacher”、“Training1”、“Training2”和“Training3”。因此 Table1[Teacher]
等价于 A2:A7。您可以用一种语法代替另一种语法,但使用表格会给您一个动态范围,否则您将不得不创建该范围。
我有你的输出表在 A11:E14 范围内。因此,我在 A12:A14 中有“Training1”、“Training2”和“Training3”。因此,在复制公式时,INDIRECT("Table1["&$A12&"]"
指的是这些名称的表列。该分量在以下公式中占有突出地位。
上面的公式在B12,然后复制到B13:14。观察它对 B11 的引用,它从那里获得“首席导师”。将其对 A12 的引用更改为捕获“Training1”所在的行,该行必须与表中的列标题匹配。
这是单元格 C12 的公式。您可以像在 Office 365 中一样使用它,但在早期版本的 Excel 中它将是一个数组公式。数组公式需要通过 CTL + SHIFT + ENTER 确认。调整好后,复制到C14:E14。
=INDEX(Table1[Teacher],SMALL(IF(INDIRECT("Table1["&$A12&"]")="Tutor",ROW(INDIRECT("Table1["&$A12&"]"))-ROW(INDEX(INDIRECT("Table1["&$A12&"]"),1))+1),COLUMN()-2))
这个公式有一个不规则之处,我决定留给你修正。如您所见,它包含要在表中搜索的单词“Tutor”(与“Lead Tutor”不同)。在我的测试表中,我有 C11:E11 中的单词(从您的表设计中复制),并且应该从那里获取它,就像我在第一个引用 B11 的公式中所做的那样。实际上,它会帮助您理解公式,但如果您设置表格的方式是这样,您可以将“导师”一词替换为 C$11
。
有一个对表格的“教师”列的引用和 3 个对 A12 的引用,上面已经解释过。我提请您注意COLUMN()-2)
。当您在 C 列中输入此公式时,它将返回 1,并将其复制到右侧,它将计算 2 和 3。这就是定义 SMALL 函数的等级的方式。根据您粘贴公式的列调整它。
编辑
假设您不想将第一个表转换为表,您可能会通过您分配的名称来引用范围(并在该过程中使其动态化)。创建 4 个命名范围,如下所示:-
A2:A7 as "Teachers"
B2:B7 as "Training1"
C2:C7 as "Training2"
D2:D7 as "Training3"
观察新命名的区域中有 3 个在 A12:A14 中有它们的名称。现在 B12 和 C12 的公式如下所示。
[B12] =INDEX(Teachers,INDIRECT($A12),0))
[C12] = INDEX(Teachers,SMALL(IF(INDEX(INDIRECT($A12),1)="Tutor",ROW(INDEX(INDIRECT($A12),1))-ROW(INDEX(INDIRECT($A12),COLUMN()-2))
,
我研究了一个要使用的公式。
在 G3 中使用以下内容:=LET(x,INDEX(Table24,MATCH($F3,$1:$1,0)),IFERROR(INDEX(Table24[[name]:[name]],SMALL(IF(G$2=x,ROW(x)-1,""),COUNTIF($G$2:G$2,G$2))),""))
或者如果您有旧版本的 Excel,请使用此功能(避免使用 LET 函数):
=IFERROR(INDEX(Table24[[name]:[name]],SMALL(IF(G$2=INDEX(Table24,ROW(INDEX(Table24,0)))-1,"")