Excel中的OFFSET函數僅用於非重複性數據

Excel中的OFFSET函數僅用於非重複性數據

我想使用 OFFSET 函數將列中的資料增加三倍。但我有一些重複的數據(有時超過兩次重複),我只想將其中一個數據增加三倍,而不是兩者都增加三倍,並保留另一個數據。這是我的數據和功能:

 =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(IF(與(A2=A1;B1=3);1;IF(與(A2=A1;B1<3);0;3));3)

C2
=IFERROR(偏移(B2;-1;0)+偏移(C2;-1;0);0)

然後用這些填充 B 和 C 列,您將得到一個表格:
B)每個項目(在同一行上)應在列中重複多少次
C)從哪個 A1 偏移行中選擇重複值。

現在,我認為這不可能用公式來完成。

需要使用VBA;在下面您可以找到一個“子”(具有從上面選擇的邏輯/公式),它將建立所要求的表,假設您的表從 A1 開始

子 createDupeTable()

  r = 1: c = 1 ' 假設:使用 Cells(r,c) 存取 A1
  br = 1: bc = c + 1 ' 從哪裡開始插入副本,Cells(br,bc)

 '“B1”(上面)中的值始終為 3
  pz = 3

  執行 While 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

相關內容