答案1
答案2
您已经有了数据集的表格,因此请为水果列表和每种水果使用的区分符(数据集表格中的列)制作另一个表格(或只是一个范围,但看起来您喜欢和/或习惯使用表格)。也许您可以在 E1:F3 中执行此操作。
然后构建输出表:不是表格,而是一个常规范围。也许它会从 H1 开始。将其标记为“水果”,然后继续使用以下公式标记接下来的十列:
="Diff-"&(COLUMN()-8)
或者任何看起来像是水果区分元素的好的列标题。
为什么是正常范围而不是表格?因为表格不允许SPILL
其中的公式起作用。而您希望拥有该功能。(这不是因为列标题会转换为文本……这根本不是什么不愉快的事情。)
在 H2 中,放置此公式以列出数据集“水果”列中的所有唯一项目:
=UNIQUE(INDIRECT("Table1["&H1&"]"))
或者,您知道,不要像那样将其连接到 H1,而直接使用:
=UNIQUE(Table1[Fruit])
现在您有了合适的标题和一列,其中收集了数据集“水果”列中存在的所有水果名称……唯一名称集,而不是所有条目。您现在需要的只是它们独有的现有区别因素。
=TRANSPOSE(UNIQUE(INDEX(FILTER(Table1[[Color]:[Size]],Table1[Fruit]=H2),,MATCH(XLOOKUP(H2,Table2[Fruit],Table2[Differentiator]),Table1[[#Headers],[Color]:[Size]],0))))
XLOOKUP(H2,Table2[Fruit],Table2[Differentiator])
使用 H 列中的值在第二个表中查找水果的区分符。它将该值传递给MATCH()
包装它的函数,该函数将其与数据集表的标题进行比较,并返回一个数字,您将在最终函数中将其用作列号INDEX()
。
对于该INDEX()
函数,您希望使用所有其他可接受的行,因此空逗号之间通常会有一个行号。
INDEX()
需要一个数据集来处理,这就是FILTER()
您要做的。它的测试在数据集表 H2 中查找水果,并返回与水果匹配的行。但它会返回所有特征列(这里是两个,但将来您可以将其扩展到更多)。
INDEX()
然后使用找到的列号MATCH()
向公式仅返回一个特征列。
现在您只剩下右列和其中与 H2 中的水果相关的行,您可以开始UNIQUE()
工作了。
它将返回您需要的唯一值的列。但是您需要一行,所以该TRANSPOSE()
函数会为您完成一切。
SPILL
为您填写行。按要求抄录下来。
然后以您需要的任何方式收集输出数据(复制并粘贴到其他程序中(可能是直接复制和粘贴到“Shopify”),粘贴到您保存为 CSV 文件的传输电子表格中,或者电子表格可以工作,无论您如何操作。SPILL
数组复制并粘贴得很好。
然后,当你有时间的时候,用它修饰一下LET()
,给可怕的“Table1[[Color]”引用真正可读的名称,并将你可能想要编辑的输入(如“H2”)放在绝对开始处,以便于查找和编辑它们。
最后,在设置 T/tables 时,考虑将它们分开,也许放在不同的工作表上,以便随着时间的推移添加更多种类的项目时轻松扩展它们。