在列中查找两个值并计算相邻单元格的差异
我有两列如下。
ABC 1 1/9/2016 12:57:48 PM Text A 2 1/9/2016 1:04:48 PM Text A 3 1/9/2016 1:05:04 PM Text A 4 1/9/2016 1:05:14 PM Text A 5 1/9/2016 1:05:15 PM Text B A5 – A1 6 1/9/2016 1:05:38 PM Text A 7 1/11/2016 9:57:12 AM Text A 8 1/15/2016 10:42:55 AM Text A 9 1/15/2016 10:45:21 AM Text B A9 – A6 10 1/15/2016 10:58:12 AM Text A
查询:我需要在单元格C5中的单元格:A5和单元格:A1,在C9中的A9 – A6等等。所以基本上,我们必须查看列B中的文本值的变化 – 相应的列A值。 希望我对这个问题的解释是可以理解的。 如果没有 – 请让我知道。 如果可能,我可以帮助更好地理解。
你可以再用一列吗? 如果是的话,解决scheme可能是这样的:
让D成为额外的列
- 在D1中把公式:= A1
-
在D2中把公式:= IF(B1 =“文字B”,A2,D1)
- 从D2中拖下公式
-
在C2中把公式:= IF(B2 =“文字B”,A2-D1,“”)
- 从C2下拉公式
这里是@Agata Powalka答案中的C2公式的2个小改动,这是很好的:
=IF(B2 = "Text B", IF(B1 = "Text B", A2, A2-D2), "")
当Text B
行直接出现在另一个下面时,这将处理这种情况,它将显示列A
。 为了清楚起见,我也将A2-D1
更改为A2-D2
。 它不会改变结果。
在Google表格中,这有点棘手,但只能用公式来完成。 我假设没有标题,文字是'B'
, A:A
是date, B:B
是文本。 添加一个列D
并将D1
设置为以下值:
=index( $A:$A, index( transpose(split("1 "&join(" ", arrayformula(if($B:$B="B", row($B:$B), ""))), " ")), countif($B$1:$B1, "B"), 1 ) )
以上公式将导致文本'B'
的最后date。 现在复制D1
并向下拖动。 现在结果栏C
是微不足道的。 在下面的C1
上键入并拖动。
=if(B1="B", A1-D1, "")
示例文件在这里和下面是它的截图。 我将列C
的格式设置为duration
并强调列A
上的某些date。
如果你喜欢自定义function或者运行脚本,几十行GAS也可以完成这项工作。 就个人而言,我更喜欢配方,即使它很丑。