Warning: fopen(/www/wwwroot/www.wendadaohang.com/data/md5_content_title/b1/b1bd15a167eaaecf166f00bdb1a6d0f2.txt): failed to open stream: No space left on device in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2468

Warning: flock() expects parameter 1 to be resource, bool given in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2469

Warning: fclose() expects parameter 1 to be resource, bool given in /www/wwwroot/www.wendadaohang.com/inc/function.php on line 2475
excel如何提取同一个人的不同日期,让其在同一行显示? - 55问答网

excel如何提取同一个人的不同日期,让其在同一行显示?

excel如何提取同一个人的不同日期,让其在同一行显示

说一下可以扩展应用的方法。如果表格可以改,考虑友好一点的公式,可以构造一列辅助列(实际用时可以设置好隐藏起来)。

第1步:在原格式姓名列前插入1列,A3=B3&COUNTIF($B$3:B3,B3),利用不同姓名出现的次数COUNTIF($B$3:B3,B3)来构造唯一的识别码。

第2步:就可以在新的区域里使用VLOOKUP函数了,G3=VLOOKUP($F3&(COLUMN()-6),$A:$C,3,FALSE),可以右拉和下拉填充。填充完就得到了结果。公式里的“FALSE”也可以换成“0”。

这里COLUMN()是为了G3所在列的列号7,减去6就得到了1;同样对于H3的COLUMN()是8,减去6得到2;这样操作就得到了A1、A2、A3。也可以直接简化为COLUMN(A1),即G3=VLOOKUP($F3&COLUMN(A1),$A:$C,3,FALSE),右拉填充会变成COLUMN(B1)、COLUMN(C1),效果一样。

扩展一下,如果原数据不是所有姓名都是相同数量的,比如有2个、4个的,可以IFERROR函数来增强功能,G3=IFERROR(VLOOKUP($F3&(COLUMN()-6),$A:$C,3,FALSE),"")这样A4不存在的话,时间4就不显示了。

追问

如果 A 有4个时间,其中两个是相同时间,我只想取A不同的3个时间呢,怎么去掉A的重复时间?

追答

改进的方法还是以方便理解和使用为原则,没有复杂的公式,只是又加了2个辅助列变成3个辅助列了:

1.第1列(A列)是连接姓名和时间;

A3=D3&E3

2.第2列(B列)则是对A列内容进行计数,有重复的就留空,没有重复的话就等于姓名,这样就得到了不涉及重复时间的新姓名列;

B3=IF(COUNTIF($A$3:A3,A3)>1,"",D3)

3.第3列(C列)就跟之前的方法一样,对B列新姓名列进行计数,得到A1、A2、A3等等,而对于B列为空的C列也为空不计数了。

C3=IF(B3="","",D3&COUNTIF($B$3:B3,B3))

时间1的公式改一下再复制:I3=VLOOKUP($H3&COLUMN(A1),$C:$E,3,FALSE)

即使有5个6个重复值也不会被计数取值了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-11

三键数组公式

公式:=IFERROR(INDEX(B:B,SMALL(IF(IFERROR(FIND($E3,A:A&B:B,1),0)=1,ROW(B:B)),TRANSPOSE(ROW(INDIRECT("1:"&COUNTA(B:B)) )))),"")

建议:多少数据就选多少数据,不然数组公式数据多的话,电脑处理器又跟不上的话,容易卡顿。

建议类似这样选择区域:=IFERROR(INDEX($B$3:$B$6,SMALL(IF(IFERROR(FIND($E3,$A$3:$A$6&$B$3:$B$6,1),0)=1,ROW($B$3:$B$6)),TRANSPOSE(ROW(INDIRECT("1:"&COUNTA($B$3:$B$6)) )))-2),"")

相似回答