Excel 运行长度编码

Excel 运行长度编码

如果我 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))),"")

相关内容