如果我 Excel 中有一列数据如下:
1
1
1
0
1
0
0
1
1
有没有一种简单的方法可以将其转换为如下所示的运行长度列表:
3 1
1 0
1 1
2 0
2 1
(三个 1,后跟一个 0,后跟一个 1,后跟两个 0,后跟两个 1)
我强烈希望坚持使用某种公式,因为它们对与我一起工作的其他一些人来说更加透明。
答案1
我并不是说这很容易,也不优雅,也想象有人可以改进它。我非常感谢 Mike Girvin 提供的最后两个公式。
假设原始数据在 A 列中,以 A1 开始:
- 用 1 填充 B1,用公式填充 B2 及以下
=IF(A2=A1,B1+1,1)
- 使用公式填充 C1 及以下
=IF(B2>B1,"",B1)
- 使用公式填充 D1 及以下
=IF(C1="","",A1)
- 使用公式填充 E1 及以下
=IFERROR(INDEX($C$1:$C$100,AGGREGATE(15,6,(ROW($C$1:$C$100)-ROW($C$1)+1)/($C$1:$C$100<>""),ROWS(E$1:E1))),"")
- 使用公式填充 F1 及以下
=IFERROR(INDEX($D$1:$D$100,AGGREGATE(15,6,(ROW($D$1:$D$100)-ROW($D$1)+1)/($D$1:$D$100<>""),ROWS(F$1:F1))),"")