我想创建一个矩阵,形成一个包含列数据的工作表

我想创建一个矩阵,形成一个包含列数据的工作表

我有一张如下所示的工作表:
数据工作表

我想(自动)创建一个如下所示的矩阵:

结果矩阵的工作表

实现这一目标的最佳方法是什么?

答案1

使用公式可以轻松完成此操作。为简单起见,我将矩阵放入 主工作表的列(及以外);将其移动到另一个工作表(页面/选项卡)很简单CN

这是函数的工作SEARCH,它在一个字符串中查找另一个字符串,例如在“frantic”中查找“anti”。我们将使用它来查找属性列表(“antiseptic、antifungal、analgesic、antitumoral 等”)中的每个单独属性(“analgesic”、“antibacterial”等)。  SEARCH返回子字符串的位置 — 例如,SEARCH("anti", "frantic")返回 3,因为“a”是“frantic”的第三个字符。我们不关心这个;我们关心的是,如果第一个字符串存在于第二个字符串中,则SEARCH返回一个数字,否则返回一个错误。因此,如果我们将其放入ISERROR(SEARCH(C$1, $B2))单元格中 ,如果“antiseptic”( )在 Lavender()的属性列表中,C2则返回 FALSE ,否则返回 TRUE。所以C1B2

=IF(ISERROR(SEARCH(C$1, $B2)), "", "x")

如果属性在列表中则显示x,如果不在则显示空白。

但这种说法过于简单。如果属性列表中包含“抗菌(强大)”,那么搜索“抗菌”将会成功。您对所需矩阵的说明表明您不希望这种情况发生。对此有一个标准技巧:搜索“,抗菌,”(开头和结尾均带有逗号),以在列表中找到“抗菌”作为完整条目。但如果“抗菌”是列表中的第一个或最后一个条目,则不会匹配 - 因此我们也在列表的开头和结尾添加逗号。

因此,将其放入=IF(ISERROR(SEARCH(", "&C$1&",", ", "&$B2&",")), "", "x") 单元格 C2,然后向下和向右拖动:

矩阵

相关内容