每个块重复一次

时间:2016-11-14 19:19:38

标签: excel excel-formula

我有这个Excel表格示例:

     A B C   D
--------------
1 |  1 a 1   x
2 |    b 1  
3 |    c 2
4 |    a 3   x
5 |  2 r 4   x
6 |    r 4   x
7 |    t 1
8 |      4 
9 |  3 a 1
10|    b 3   x
11|    c 3
12|    b 6   x

我需要为每个块找到重复项(在D列中用x标记),但仅限于它自己的块的上下文(块是在A1和A4之间找到的 - 对于1,另一个块是从A5到A8 - 对于2,依此类推)。 B1 = a它不是B9 = a的重复,因为B9属于块3而B1属于块1.但B1是B4的副本,它们在同一块上,因此B1和B4都应该标有x。

我在动态测距/组合方面遇到了困难:

基本上我需要在D列中找到范围(从A中的位置开始,首先不是A中的空字段,首先不是A中的空字段) 。例如:在D4中我需要在A中第一个非空是A1,在A中第一个非空是A5,并将范围构造为A1:A5-1。

1 个答案:

答案 0 :(得分:3)

使用辅助列来避免使用数组公式:

在d2中:

=IF(A2="",D1,A2)

这将填写缺失的A列值:

enter image description here

然后在E2:

=IF(COUNTIFS(D:D,D2,B:B,B2)>1,"x","")

enter image description here

如果你想要数组公式:

=IF(COUNTIF(INDEX(B:B,AGGREGATE(14,6,ROW($A$1:INDEX(A:A,ROW()))/($A$1:INDEX(A:A,ROW())<>""),1)):INDEX(B:B,IFERROR(AGGREGATE(15,6,ROW(INDEX(A:A,ROW()+1):INDEX(A:A,MATCH("zzz",B:B)))/(INDEX(A:A,ROW()+1):INDEX(A:A,MATCH("zzz",B:B))<>""),1)-1,MATCH("zzz",B:B))),B2)>1,"x","")

enter image description here