Excel 中的 OFFSET 函数仅适用于非重复数据

Excel 中的 OFFSET 函数仅适用于非重复数据

我想使用 OFFSET 函数将列中的数据增加三倍。但我有一些重复的数据(有时重复次数超过 2 次),我只想将其中一个数据增加三倍,而不是同时增加两个数据,并保留另一个数据。这是我的数据和函数:

 =OFFSET($A$2,INT((ROWS($A$2:A2)-1)/3),0)
               A
 2      5YJSA3H17EFP49729
 3      5YJSA3H17EFP41128
 4      5YJSA3H17EFP30954
 5      5YJSA3H17EFP30954
 6      5YJSA3H17EFP30212
 7      5YJSA3H17EFP30050

在这个例子中,5YJSA3H17EFP30954 是重复的,但我只想对其中一个执行 OFFSET 并保留另一个,所以我希望重复 4 次。

答案1

如果你将这些输入到 B2 和 C2

B2
=IFERROR(如果(AND(A2=A1;B1=3);1;如果(AND(A2=A1;B1<3);0;3));3)

C2
=IFERROR(OFFSET(B2;-1;0)+OFFSET(C2;-1;0);0)

然后用这些填充 B 和 C 列,您将得到一个表格:
B)每个项目(在同一行)在 C 列中应重复多少次
)从哪个 A1 偏移行中选择重复的值。

现在,我认为这不可能通过公式来实现。

需要使用 VBA;下面有一个“子程序”(使用从上面挑选的逻辑/公式),它将创建所请求的表格,前提是您的表格从 A1 开始

子创建DupeTable()

  r = 1: c = 1 ' 假设:使用 Cells(r,c) 访问 A1
  br = 1: bc = c + 1 ' 从哪里开始插入副本,Cells(br,bc)

 '“B1”(上方)中的值始终为 3
  pz = 3

  当 Cells(r, c).Value <> "" 时执行
    a1 = 单元格(r,c).值
    a2 = 单元格(r + 1,c).值
    b1=pz
    如果 a2 = a1 且 b1 = 3 则
      Z=1
    别的
      如果 a2 = a1 且 b1 < 3 则
        Z = 0
      别的
        Z=3
      万一
    万一

    pz=Z
    当 Z > 0 时执行
      Cells(br, bc).Value = Cells(r, c).Value ' 从列表中复制一个值
      Z = Z - 1
      br = br + 1
    环形

    r = r + 1
  环形
子目录结束

结果:

     AB
1 5YJSA3H17EFP49729 5YJSA3H17EFP49729
2 5YJSA3H17EFP41128 5YJSA3H17EFP49729
3 5YJSA3H17EFP30954 5YJSA3H17EFP49729
4 5YJSA3H17EFP30954 5YJSA3H17EFP41128
5 5YJSA3H17EFP30212 5YJSA3H17EFP41128
6 5YJSA3H17EFP30050 5YJSA3H17EFP41128
7 5YJSA3H17EFP30954
8 5YJSA3H17EFP30954
9 5YJSA3H17EFP30954
10 5YJSA3H17EFP30954
11 5YJSA3H17EFP30212
12 5YJSA3H17EFP30212
13 5YJSA3H17EFP30212
14 5YJSA3H17EFP30050
15 5YJSA3H17EFP30050
16 5YJSA3H17EFP30050

相关内容