根据excel中的其他列从列中提取值

时间:2014-06-29 16:32:25

标签: excel

我是excel的新手。我有一张类似于下表的表格(日期,标识)

Date        Id
02.06.2014  314
            315
            316
            317
            318
03.06.2014  326
            327
            328
            329
04.06.2014  347
            348
05.06.2014  356
            357
            358
            359

我需要提取每天的起始ID和结束ID,我的结果应该类似于下表(日期,起始ID,结束ID)

Date        Start id  End id
02.06.2014  314       318
03.06.2014  326       329
04.06.2014  347       348
05.06.2014  356       359

工作表太大,无法手动完成。有没有办法在Excel中自动化该过程。如果是这样请帮助

2 个答案:

答案 0 :(得分:1)

这个答案是务实的,试图让它保持相当简单,但允许你按照自己的要求自动化流程。它需要一些手动操作,并且只有在id列中的值是唯一的时才有效。

Screenshot to guide the answer

第一步是压缩列A以删除空单元格。这可以通过所谓的数组公式来完成,如在网络上的几个地方所解释的那样,例如here。在示例表中,我使用了

=INDEX($A$2:$A$16, SMALL(IF(ISBLANK($A$2:$A$16), "", ROW($A$2:$A$16)-MIN(ROW($A$2:$A$16))+1), ROW(A1)))

对于单元格D2然后按 Ctrl + Shift + 输入以使其成为数组公式,从而确认了这一点。公式将用大括号括起来。单元格D2现在应包含第一个日期值。现在抓住D2的右下角并将其拉下以填充其他值。如果你拉得足够远,你将获得所有价值。之后,您将获得#NUM!。如果这是一个问题,请查看前面的链接,了解如何使用IFERROR()函数来避免这种情况。

接下来是E2的公式:

=LOOKUP($D2,$A$2:$A$16,$B$2:$B$16)

再次,向下拉右下角以填充E中的其他字段。请注意,此公式仅在列B中的值唯一时才有效。如果不是这种情况,则需要更复杂的公式。

最后,要填充列F,请使用

=INDEX($B$2:$B$16,MATCH($E3,$B$2:$B$16)-1)
单元格F2中的

并向下拉。请注意,此公式不适用于列F中的最后一个值。最简单的方法是手动填写该值,如果您不喜欢,请在网络上搜索公式以查找B列中的最后一个值。

答案 1 :(得分:1)

我的解决方案没有任何公式将是这样的...但你需要设置如下的原始数据... 即重复日期标签 ..(这更容易做到作为一项清理工作)...例如在单元格A3中键入“= A2”然后选择范围A3到A16或END例如..按Ctrl + G ..单击特殊...选择空白...将选择所有空白单元格...和按Ctrl + V粘贴公式...这将根据前一行自动填写每行的日期......

enter image description here

Date    ID
02/06/2014  314
02/06/2014  315
02/06/2014  316
02/06/2014  317
02/06/2014  318
03/06/2014  326
03/06/2014  327
03/06/2014  328
03/06/2014  329
04/06/2014  347
04/06/2014  348
05/06/2014  356
05/06/2014  357
05/06/2014  358
05/06/2014  359

然后执行数据透视表..使用行中的日期..和最小ID和最大值的ID。示例如下..

enter image description here

请在评论中告诉我这是否对您有所帮助。