Excel 行编号基于条件吗?

Excel 行编号基于条件吗?

我有一张电子表格,用户可以在其中输入一系列数据点,最终绘制成图表。表格共有 100 行,最左边的列包含每行的勾选框。我希望用户能够勾选这 100 个框中的 10 个,并将这些数据按从列表顶部到底部的顺序绘制成图表。

勾选框与显示真假的列相链接。最终,我将得到一列,其中包含 90 行“假”和 10 行“真”。每次使用工作表时,真值行可能位于不同位置,包括第一行包含真值。

我想要将 10 个真实行的数据复制到一个 10 行表中(在同一张表上)并绘制成图表。

我曾想过从上到下将真实的行编号为 1-10,这样可以简单地将数据复制到 10 行表中。

但是,我无法让这些“真实”行的编号每次都与不同的起始行配合使用。我最接近的方法是使用 COUNTIF 公式。

有人可以帮忙吗?

答案1

虽然有更优雅的解决方案,但公式有些复杂,但这将为您提供一个非常简单且易于实现的解决方案。

让我们假设您的 TRUE/FALSE 值(我假设这些值在您的单元格中转换为 1 和 0)在范围 D3:D103 内,并且进一步假设与每个潜在的 100 个 TRUE/FALSES 相关的文本在范围 E3:E103 内。

在单元格 C3 中输入以下公式,然后复制到 C103:
=SUM(D$3:D3)

这将为您提供类似 0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3等向下的内容,具体取决于 D 列中 1 的位置。

(如果您没有 1 和 0,并且您实际上直接从表单控件中获得了 TRUE/FALSE 条目,则只需使用=SUMPRODUCT(--(D$3:D3))即可)

现在在单元格 J6:J15 中输入值1,2,3,4,5,6,7,8,9,10,,然后在单元格 K6 中输入以下公式并复制到 K15:
=VLOOKUP(J6,$C$3:$E$103,3,0)

现在您将在 K 列中看到与已勾选的 10 个选项相关的文本,按照它们在列表中出现的顺序排列。

如果您想知道它们在列表中的实际数字,那么在单元格 L6 中输入以下公式并复制到 L15:
=MATCH(J6,$C$3:$C$103,0)

如果您想知道每个条目出现的实际行,那么在单元格 M6 中输入以下公式并复制到 M15:
=MATCH(J6,$C$3:$C$103,0)+ROW($C$3)-1

答案2

好的,我设法让它工作了,虽然有点复杂,但工作做得很好。必须将范围增加到 150 行才能覆盖要输入的数据。

我把所有的真/假都放在了 I 列,所以在 J 列中我只放了包含真值的行的行号......

=IF(I7=FALSE, "", ROW())

然后在 K 列中,我使用 RANK 函数分配我想要的 1-10 个数字。行号只会沿着列表向下增加,因此降序排列的 rank 函数可以正常工作。

=IF(J7="", "", RANK(J7,$J$7:$J$156, 1))

然后我能够使用 VLOOKUP 函数将这些 1-10 的数字与我想要提取的数据进行匹配,以填充工作表其他地方的 10 行表,以便绘制图形。

我确信有很多更好的方法可以做到这一点,但不幸的是我有一个完成它的最后期限,所以我可以稍后再重新审视它,看看是否可以改进它。

非常感谢这些帖子,因为它为我提供了其他尝试的方法,最终使它得以发挥作用。

相关内容