繁体   English   中英

谷歌表格,根据相对排名返回一个文本值

[英]Google Sheets, returning a text value based on relative rank

我正在尝试根据重复范围内的单元格值创建相对排名结构。

我已经相应地对文本值进行了排名。 文本排名

然后,我有一张包含这些文本值子集的列的表格,如下所示; 文本值表

我想要完成的是,当在 A 行的单元格中输入 1 的等级时,它将根据 B 行中的列值返回该行的最大值。例如;

如果将 1 输入到单元格 A2 中,它将在 B2 中返回“文本 1”。 如果在 A2 中输入 2,它将在 B2 中返回“文本 3”。 如果在 A2 中输入 3,它将返回“文本 5”。 如果输入任何其他等级 (4-20),B2 将保持空白。 在第 3 行中也会发生同样的情况,只是它将“文本 2”视为 1 级,“文本 3”作为 2 级,“文本 4”作为 3 级。

我可以使用 XLOOKUP 在 Excel 中完成这项工作,但我无法使用 Google Sheets 解决问题,非常感谢这里的任何帮助!

试试这个:

公式(B7):

=IFERROR(INDEX(ARRAYFORMULA(VLOOKUP(SORT(VLOOKUP(TRANSPOSE(C7:7), {Sheet2:$B$2,$B$21:Sheet2,$A$2,$A$21}, 2: FALSE)), Sheet2,$A$2,$B$21, 2, FALSE)), A7), "")

表2:

表2

Output:

输出

公式步骤:

  1. 将行转置为列,以便能够使用TRANSPOSE并将其与Sheet2VLOOKUP比较。
  2. 使用VLOOKUP返回排名。
  3. SORT排名。
  4. VLOOKUP再次查看Sheet2中的值,现在返回文本值
  5. 此时,我们现在有了基于行值的排序文本值列表,现在我们使用给定的排名并使用INDEX获得基于排名的排序文本值
  6. 如果它返回#N/A ,则返回空白。

逐步可视化第 7 行的公式:

可视化

如果您可以复制公式,那么这应该有效:

=iferror(index(split(textjoin(char(6655),true,$C2:$G2),char(6655)),$A2),"")

行上的值使用TEXTJOIN连接在一起,由CHAR(6655)分隔,这是您不希望在文本中包含的字符。 TEXTJOIN中的true删除空白单元格。 然后SPLIT使用CHAR(6655)将文本分成单独的单元格。

INDEX然后根据 A 列中的 Rank 值获取相应的单元格值。

如果 Rank 值大于数据单元格的数量,则IFERROR不显示任何内容 ( "" )。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM