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