在列中查找两个值并计算相邻单元格的差异

我有两列如下。

在这里输入图像说明

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也可以完成这项工作。 就个人而言,我更喜欢配方,即使它很丑。