有没有办法在 Excel 中自动填充完整的表格,例如,当列出标题时,它会根据标题从另一张表中调出一个表格?
为了更好地解释一下,我在实验室工作,我想填充一个表格,该表格告诉您如何根据您在某个单元格中输入的测试名称来制作标准曲线。
上面会有我想要的信息,表格适用于所有测试,所以只有标准曲线不同,这就是为什么我希望它根据名称出现,而不必为每个测试制作一张表。
我对 Excel 还比较陌生,所以如果这是一个愚蠢的问题,请见谅!!
我已经使用 V-lookup 获取顶部的信息,该信息仅包括序列号和日期,但我认为它不适用于完整的表格。
答案1
FILTER()
尽管检查公式会感觉有点奇怪,但你还是可以通过它来完成它。
=FILTER(INDIRECT(SUBSTITUTE(H1," ","")&"[#All]"),INDEX(INDIRECT(SUBSTITUTE(H1," ","")&"[#All]"),,1)=INDEX(INDIRECT(SUBSTITUTE(H1," ","")&"[#All]"),,1))
通常FILTER()
,当您想要结果中包含所有数据行时,您可以使用 A2:A1982=A2:A1982 之类的条件,该条件必然为 TRUE,因为每个项都会等于其自身。有时,您也可以使用条件格式公式执行相同的操作。
但是,那是行不通的FILTER()
,我过去认为这是因为如果输入范围不是简单的 Ax:By 地址,它就不愿意接受输入范围。例如表格和 SPILL 范围。然后我发现,你真的只需要输入地址,继续公式让 Excel 接受它作为单元格公式,而不必关心它的输出是什么,然后编辑公式,突出显示你输入的数组引用并按 F9。一旦你看到 Excel 将其解析为,你就会意识到它不是你在条件中使用的正式内容。相反,它只是一个愚蠢的简单数组。如果您使用 F9 显示的精确数据形式来制定条件,或者如上所述,甚至不费心,只需使用您使用的完整表达式将其设置为等于其自身,FILTER()
最终就会为您实现。
FILTER()
因此,您可以构建要使用的数组地址INDIRECT()
,以便可以在某处输入测试的名称,然后由公式使用。
我使用了正式的表格,因为听起来你正在根据测试名称为它们命名(对于我的工作,“Test1”,“Test2”等等,但你的名称可能更恰当。我还假设人们可能会输入“Test 2”而不是“Test2”,并习惯于SUBSTITUTE()
删除可能出现的空格。如果你让他们简单地输入一个名字,比如“Horse”,它仍然可以正常工作。你只需要将表格命名为与用户将输入的预期内容相匹配,或者更好的是,添加一个下拉列表(也需要创建所述列表)和验证以确保他们从列表中选择(或输入)某些内容。
一旦您有了 Excel 创建的正式表名,它就会FILTER()
使用它来收集内部数组的数据,如下所示:
{"Column1","Column2";"e",5;"f",6;"g",7;"h",8;"i",9;"j",10}
它不再具有表格功能的良好列寻址功能。它只是一个简单的数组。如果使用INDEX()
环绕式精确INDIRECT()
指定表格,则可以根据需要选择一列或七行来创建适当的条件,但这里只需要一个简单的条件,因为人们想要获取整个表格的内容,而不是限制返回值。
因此使用INDIRECT()
我所做的那样,首先指定源数据,然后告诉测试部分将任何内容(包括标题)带入与自身匹配的表中...简而言之,表中的所有内容包括标题。
您希望包含标题,因为您希望返回结果带有标题。AND 是因为FILTER()
如果条件范围内的行总数与前半部分指定的数据数组中的行总数不匹配,则会中断。要不带标题,您需要使INDIRECT()
数据数组复杂化,尽管这实际上相当容易。
因此,您使用FILTER()
,您不直接通过文字范围或依赖于表寻址的条件指定条件,并且您必须弄清楚如何确保用户输入的测试名称将成为表名称。