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

时间:2017-03-30 09:00:45

标签: excel excel-formula excel-2010

我有两列如下。

enter image description here

A              B            C
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  

查询: 我需要Cell的细节:A5&单元格:单元格C5中的A1,C9中的A9-A6等等。 所以基本上,我们必须查看B列以获得文本值的更改 - 并减去相应的A列值。希望我对这个问题的解释是可以理解的。如果没有 - 请告诉我。如果可能的话,我可以帮助更好地理解。

3 个答案:

答案 0 :(得分:1)

你可以再使用一列吗?如果是这样,解决方案可能如下所示:

让D为附加列

  • 在D1中放入公式:= A1
  • D2中的
  • 公式:= IF(B1 =“文字B”,A2,D1)

    • 从D2
    • 下拉公式
  • C2中的
  • 公式:= IF(B2 =“文字B”,A2-D1,“”)

    • 从C2
    • 下拉公式

答案 1 :(得分:1)

以下是@Agata Powalka答案中对C2公式的两处小改动,这很好:

=IF(B2 = "Text B", IF(B1 = "Text B", A2, A2-D2), "")

这处理当Text B行紧挨着另一行发生时的情况,其中它将显示列A中的任何内容。为了清楚起见,我还将A2-D1更改为A2-D2;它不会改变结果。

答案 2 :(得分:0)

在Google表格中,它有点棘手,但只能使用公式。我假设没有标题和文字要查找'B'A:A是日期,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'的最后日期。现在复制D1并向下拖动。现在结果列C是微不足道的。在C1上输入以下内容并向下拖动。

=if(B1="B", A1-D1, "")

示例文件为here,下面是截图。我将列C的格式设置为duration,并在列A上强调了一些日期。

enter image description here

如果您更喜欢自定义功能或运行脚本,那么几十行GAS也可以完成这项工作。就个人而言,我更喜欢公式,即使它有点难看。