首页 > 解决方案 > 通过 INDEX MATCH 随机的另一个表的表头名称

问题描述

我有这两张桌子: 在此处输入图像描述

在 B 列上,我试图获取表 B 上不为空的功能的标题名称之一。我希望随机选择它。表 A 中项目的顺序可能与表 B 中项目的顺序不同,我在这里也需要某种 INDEX MATCH。

Excel 版本:Office 365

尝试的公式:我试图以此为基础制定我的公式:

=INDEX(datarange,RANDBETWEEN(1,COLUMNS(datarange)),1)

但是还有更多的事情需要考虑,比如如果相同水果的索引匹配不为空,则标题名称,所以我知道它更复杂。

任何帮助将不胜感激。

标签: excelrandomindexingexcel-formulaexcel-tables

解决方案


假设您有 Excel 365 并且可以接受不稳定的结果:

=LET(
    Fruits, Table_B[Fruit],
    Properties, Table_B[[Red]:[Green]],
    PropertiesHeaders, Table_B[[#Headers],[Red]:[Green]],
    ThisFruit, [@Fruits],

    ThisProperties, FILTER(Properties, Fruits = ThisFruit),
    ThisPropertiesFiltered, FILTER(PropertiesHeaders, ThisProperties <> 0),
    ThisPropertiesCount, COUNTA(ThisPropertiesFiltered),
    IndexRand, RANDBETWEEN(1,ThisPropertiesCount),
    IFERROR(INDEX(ThisPropertiesFiltered,IndexRand),"-")
)

ThisPropertiesTable_B你的水果的行。我省略了水果名称的列。

ThisPropertiesFiltered是水果所具有的属性的名称。我根据水果行是否具有非零值来过滤标题名称。

IndexRand获取一个介于 1 和可用属性数之间的随机数。请注意,如果可用属性为零,则ThisPropertiesFiltered返回#CALC!所以ThisPropertiesCount将返回 1。这将在稍后处理。

最后我们INDEX用来获取随机属性名称。IFERROR如果没有可用的属性,则返回“-”。

以下是表格:

表_A:

水果 结果
西瓜 重的
绿
香蕉 热带
红色的
苹果 绿

表_B:

水果 红色的 黄色的 热带 重的 绿
苹果 X X
香蕉 X X
X
X
西瓜 X X

推荐阅读