Table Header 的随机名称 table 通过 INDEX MATCH

Random of Table Header Name of another table via INDEX MATCH

我有这两个表:

在 B 列上,我正在尝试获取 Header 上 Table B 上非空特征的名称之一。我希望它被随机选择 。 Table A 中的项目顺序可能与 Table B 中的项目顺序不同,我也需要某种索引匹配。

Excel版本:Office 365

尝试的公式:我试图将我的公式基于此:

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

但是还有更多的事情要考虑,比如header name 如果同一个水果的索引匹配不为空,所以我知道它更复杂。

任何帮助将不胜感激。

既然您可以访问动态数组,您可以尝试:

B2中的公式:

=LET(X,FILTER(E:I,INDEX(E:I,MATCH(A2,D:D,0),0)<>"","No Feature"),INDEX(X,RANDBETWEEN(1,COUNTA(X))))

或没有LET():

=@SORT(SORT(CHOOSE({1;2;3},E:I,FILTER(E:I,D:D=A2),RANDARRAY(1,5)),3,1,1),2,-1,1)

如果您正在处理实际表格,这应该会自动将结果溢出到 Random Feature 下。但是,如果不使用表格,如果您是 365 内部人士,则可以将上述内容嵌套在 BYROW() 中:

=BYROW(A2:A6,LAMBDA(r,LET(X,FILTER(E:I,INDEX(E:I,MATCH(r,D:D,0),0)<>"","No Feature"),INDEX(X,RANDBETWEEN(1,COUNTA(X))))))

这不适用于我们使用“@”仅解析数组左上角值(隐式交集)的第二个选项。


想法是:

  • INDEX()MATCH() 的组合将 'slice' 根据我们的输入从 lookup-table 中感兴趣的行。
  • 在第 2 步中,我们将使用 FILTER() 仅保留那些 headers,其中 returned 数组中的元素不是 empty。在所有元素都为空的情况下,此函数将 return 值“No Feature”作为用户提示。
  • 在我们的最后一步中,我们将 INDEX()RANDBETWEEN() 结合起来。后者将 return LBound(在我们的例子中为 1)和 Ubound 之间的随机整数,我们基于 returned 元素的数量。

我试着在下面想象一下。


假设您有 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 是水果所具有的属性的名称。我根据水果行是否具有 non-zero 值过滤了 header 名称。

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

最后我们使用 INDEX 得到随机的 属性 名字。 IFERROR returns "-" 如果没有可用的属性。

这是表格:

Table_A:

Fruits Result
Watermelon Heavy
Melon Green
Banana Tropic
Peach Red
Apple Green

Table_B:

Fruit Red Yellow Tropic Heavy Green
Apple x x
Banana x x
Peach x
Melon x
Watermelon x x