
Quiero usar la función OFFSET para triplicar los datos en una columna. Pero tengo algunos datos duplicados (a veces más de 2 repeticiones) y solo quiero triplicar uno de ellos, no ambos, y conservar el otro. Aquí están mis datos y función:
=OFFSET($A$2,INT((ROWS($A$2:A2)-1)/3),0)
A
2 5YJSA3H17EFP49729
3 5YJSA3H17EFP41128
4 5YJSA3H17EFP30954
5 5YJSA3H17EFP30954
6 5YJSA3H17EFP30212
7 5YJSA3H17EFP30050
En este ejemplo, 5YJSA3H17EFP30954 está duplicado pero solo quiero realizar OFFSET en uno de ellos y conservar el otro, así que quiero tener 4 repeticiones de eso.
Respuesta1
Si los ingresa en B2 y C2
B2 =SIERROR(SI(Y(A2=A1;B1=3);1;SI(Y(A2=A1;B1<3);0;3));3) C2 =SIERROR(DESPLAZAMIENTO(B2;-1;0)+DESPLAZAMIENTO(C2;-1;0);0)
y luego complete las columnas B y C con ellas, obtendrá tablas para:
B) cuántas veces cada elemento (en la misma fila) debe repetirse en la columna
C) de qué fila de desplazamiento A1 seleccionar el valor repetido.
Ahora bien, no creo que esto sea posible lograrlo con fórmulas.
Es necesario utilizar VBA; a continuación encontrará un "sub" (con la lógica/fórmulas seleccionadas de arriba) que creará la tabla solicitada, dada su tabla que comienza en A1
Sub crearDupeTable() r = 1: c = 1 ' Supuesto: para acceder a A1 con Celdas(r,c) br = 1: bc = c + 1 ' dónde empezar a insertar copias, Celdas(br,bc) ' valor en "B1" (arriba) siempre 3 pz = 3 Hacer mientras celdas (r, c). Valor <> "" a1 = Celdas(r, c).Valor a2 = Celdas(r + 1, c).Valor b1 = pz Si a2 = a1 y b1 = 3 entonces Z = 1 Demás Si a2 = a1 y b1 < 3 entonces Z = 0 Demás Z = 3 Terminara si Terminara si pz = Z Hacer mientras Z > 0 Cells(br, bc).Value = Cells(r, c).Value ' copia un valor de la lista Z = Z - 1 br = br + 1 Bucle r = r + 1 Bucle Subtítulo final
El resultado:
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