我的解决方案

我的解决方案

我有多个数据集,其中一个分组列包含植物根部的名称 (Rname),另一个列表示检测到根部的日期(其中每一天都表示实验期间的一次测量会话 - 总共最多有六个会话)。以下是数据示例:

图像

我想找到这些会话中根的总生命周期,我希望通过简单地从上次检测的年份中减去首次检测到根的年份来实现(如图所示)。

我不精通 Excel,也不太懂如何编写宏或做类似的事情。我需要对大约 70 个单独的电子表格进行此操作,手动计算每个根几乎是不可能的。有没有办法使用辅助列或类似的东西自动执行此操作?

答案1

我的解决方案

首先,保持你的列按升序排列AB

然后,假设第 1 行是标题行,设置

C2=IF(NOT(A2=A1),ROW(),0);

D2=IF(AND(NOT(C2=C1),NOT(C2=0)),CONCATENATE("B",TEXT(C2,"0")),D1);

E2=IF(NOT(A3=A2),ROW(),0);

F2=IF(AND(NOT(E2=E1),NOT(E2=0)),CONCATENATE("B",TEXT(E2,"0")),F3);

最后,G2=INDIRECT(F2)-INDIRECT(D2)

自动填充列C直到G最后一行,您将获得单元格 Gx 中根 Ax 的生命周期。

以下是包含示例数据的输出:

在此处输入图片描述

解释

对前两列进行排序,确保数据按根分组,并且每组中的最后一个数据减去第一个数据就是该根的生命周期。

使用两个补充列(C 和 D)来查找第一个数据的单元格索引,使用另外两个补充列来查找最后一个数据的索引。

诀窍在于,每次您观察到 A 列的值发生变化时,您就知道一个数据组已经结束并且一个新的数据组开始了。

用单元格索引填充 D 列和 F 列后,使用 INDIRECT 函数获取相应的值并减去它们。

参考

TEXT 函数

INDIRECT 函数

答案2

一般而言,人们可能期望测量天数和测量次数不是对于每个根组都相同。当天数和测量次数发生变化时,以下公式会给出正确的结果。

=IF(A2<>A3,MAX(IF(A:A=A2,B:B,FALSE))-MIN(IF(A:A=A2,B:B,FALSE)),"")

CTRL这是一个数组公式,必须在 C2 中用+ Shift+输入Enter,而不是直接输入Enter。输入后,单击 C2 并向下填充数据到最后一行。下表显示结果:

在此处输入图片描述

工作原理:内部表达式IF(A:A=A2,B:B,FALSE)返回 B 列中的值数组,其中 A 列 = An(当前行中的特定 R 名称),其他所有列都为 FALSE。因此,一年中的天数对于每个 R 名称都是独立的,无论它们是什么,也无论有多少。然后通过从该数组的最大值中减去最小值来计算寿命。

外部 IF() 将 Life 计算放在一组 R 名称的末尾,其余位置留空。

希望这会有所帮助,祝你好运。

答案3

@Dunius,我想向你推荐一个立即的解决方案,就像组减法。并且它能正常使用您的数据。

在此处输入图片描述

因为对于每组代码,都有一个一年中最低和最高一天的值。

所以我的解决方案是,

=IF($A201<>$A200,(MAX(B$200:B200)-MIN(B$200:B200)),"")

将公式向下拖动。

给我一些时间为同一项工作创建 VBA 代码。

注意:公式在单元格 C200 中。请根据需要更改数据范围。

答案4

@Dunois,我想提出两个解决方案。第一个与之前的帖子有关,第二个是即兴的。

解决方案 1:

关于之前的帖子,您的问题是该公式是否适用于可变长度数据?

是的,它会起作用。查看屏幕截图Root3 有 7 行公式只需拖到长度即可,即

=IF($A201<>$A200,(MAX(B$200:B200)-MIN(B$200:B200)),"")

在此处输入图片描述

注意:数据范围是A200 至 C218(不包括标题行)。公式单元格是C200. 根据需要调整数据范围。

解决方案 2:

这是即兴的。为此,需要对数据范围进行排序并应用 Group 命令,最后使用以下公式。

=IF(F200="",MAX(G200:INDEX(G$199:G199,MATCH(2,1/(G$199:$G199=""),1)))-MIN(G200:INDEX(G$199:G199,MATCH(2,1/(G$199:$G199=""),1))),"")

在此处输入图片描述

注意:数据范围为F200 至 H218(不包括标题行)。公式位于单元格中H200

还,我故意把航向从 G199 取消了

如果您想避免这种情况,请将标题写在第 199 行,并从第 201 行开始第一个条目,并且不要忘记更改公式中的单元格地址。

根据需要调整数据范围。

相关内容