1

Я хочу использовать функцию 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 ответ1

1

Если вы введете их в B2 и C2

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

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

а затем заполните их столбцами B и C, вы получите таблицы для:
Б) сколько раз каждый элемент (в той же строке) должен повторяться в столбце
C) из какого A1-offset-ряда выбрать повторяемое значение.

Я не думаю, что это можно сделать с помощью формул.

VBA должен быть использован; ниже вы найдете "sub" (с выбранной выше логикой / формулами), который создаст запрошенную таблицу, если ваша таблица начинается с A1

Sub createDupeTable()

  r = 1: c = 1   ' Assumption: for accessing A1 with Cells(r,c)
  br = 1: bc = c + 1 ' where to start inserting copies, Cells(br,bc)

 ' value in "B1" (above) always 3
  pz = 3

  Do While Cells(r, c).Value <> ""
    a1 = Cells(r, c).Value
    a2 = Cells(r + 1, c).Value
    b1 = pz
    If a2 = a1 And b1 = 3 Then
      Z = 1
    Else
      If a2 = a1 And b1 < 3 Then
        Z = 0
      Else
        Z = 3
      End If
    End If

    pz = Z
    Do While Z > 0
      Cells(br, bc).Value = Cells(r, c).Value ' copy one value from the list
      Z = Z - 1
      br = br + 1
    Loop

    r = r + 1
  Loop
End Sub

Результат:

     A                   B
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .