Функция OFFSET в Excel только для недублированных данных
Я хочу использовать функцию 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
Би 2 = ЕСЛИОШИБКА (ЕСЛИ (И (А2 = А1; В1=3);1; ЕСЛИ (И (А2 = А1; В1<3);0;3));3) С2 = ЕСЛИОШИБКА (OFFSET(В2;-1;0)+ смещение (С2;-1;0);0)
а затем заполните их столбцами B и C, вы получите таблицы для:
Б) сколько раз каждый элемент (в одной строке) должен повторяться в столбце
C) из какого A1-offset-ряда выбрать повторяемое значение.
Я не думаю, что это можно сделать с помощью формул.
VBA должен быть использован; ниже вы найдете "sub" (с выбранными выше логикой / формулами), который создаст запрошенную таблицу, учитывая, что ваша таблица начинается с A1
Sub createDupeTable () r = 1: c = 1 'Предположение: для доступа к A1 с ячейками (r, c) br = 1: bc = c + 1 ', где начать вставку копий, ячейки (br, bc) 'значение в "B1" (выше) всегда 3 pz = 3 Do While Cells (r, c). Значение <> "" a1 = клетки (r, c). значение a2 = Клетки (r + 1, c). Значение b1 = pz Если а2 = а1, а б1 = 3, то Z = 1 еще Если a2 = a1 и b1 < 3, то Z = 0 еще Z = 3 End If End If pz = Z Делай пока Z > 0 Ячейки (br, bc).Value = Ячейки (r, c).Value 'скопировать одно значение из списка Z = Z - 1 br = br + 1 петля r = r + 1 петля End Sub
Результат:
АВ 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