
我想使用 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