答案1
当您说“在同一行”时,您肯定是指“列”,所以我会继续假设这一点。
您的输出表需要几项内容,其中第一项(所有其他内容都从其底部开始)是其他可接受的 JobClass 条目列表。因此,在输出表的该列中,放置一个返回该 JobClass 数据列表的公式:
=FILTER(HLOOKUP(JobClass,SearchTable,SEQUENCE(13,1,4,1),FALSE),HLOOKUP(JobClass,SearchTable,SEQUENCE(13,1,4,1),FALSE)<>0)
它假设您创建了两个范围,一个范围JobClass
是标有该标记的条件单元格,或者使用其单元格地址,另一个范围肯定是SearchTable
此处调用的范围,该范围将包括以条目为标题的所有列JobClass
以及从该条目到“Code13”行的所有行。
在第一行中查找HLOOKUP()
条件的 JobClass 值,找到后,读取第 4 行至第 16 行。FILTER()
从结果中删除空单元格。搜索“5023”将返回 6 个结果。搜索“5077”将返回 13 个结果。
填充下表的该列后,您可以考虑其左侧的代码列。除非您希望全部填充,否则可以通过根据需要生成最多 13 个数字(1-13)来解决此问题。以下公式可以巧妙地做到这一点:
=FILTER(SEQUENCE(13),B33:B45<>"")
它用于FILTER()
创建一个包含 13 个数字 (1-13) 的列表,并检查 JobClass 返回的列中是否存在“非空白”值,仅返回该数字列表中的多个值。因此,没有 JobClass 的任何行也没有代码条目。
即使 JobClass 列中有 1 个或 6 个项目,如果有人想填充它,那么只SEQUENCE()
需要公式的一部分。
这样您将得到 1、2、3、...、13。按如下方式格式化该列: "Code"#0
Excel 将显示这些数字,并在其前面加上单词“Code”。
其余信息只是HLOOKUP()
基于 JobClass 标准的简单信息。它们只需要返回找到的列的第二部分或第三部分,如下所示:
=HLOOKUP(JobClass,SearchTable,2,false)
和
=HLOOKUP(JobClass,SearchTable,3,false)
由于该表中其余数据来自其他来源,因此我将这些数据留给您。