#### Archived

This topic is now archived and is closed to further replies.

## Recommended Posts

Hola buenas.

Tengo una macro para combinacion de numeros, pero dado el limite en excel
Número total de filas y columnas en una hoja de cálculo 1.048.576 filas por 16.384 columnas

No puede finalizar la macro se queda pillada en la fila 810.00, la idea es que se ejecute ejemplo hasta la fila 500.00 y siga en otras columnas o rango ejemplo k:m

Esta es la macro:

```Sub COMBINAR_4()

Columns(5).ClearContents
Columns(6).ClearContents
Columns(7).ClearContents
Columns(8).ClearContents
Columns(9).ClearContents

FIN_A = Range("A1", Range("A" & Rows.Count).End(xlUp)).Rows.Count
FIN_B = Range("B1", Range("B" & Rows.Count).End(xlUp)).Rows.Count
FIN_C = Range("C1", Range("C" & Rows.Count).End(xlUp)).Rows.Count
FIN_D = Range("D1", Range("D" & Rows.Count).End(xlUp)).Rows.Count

For X = 1 To FIN_A
For Y = 1 To FIN_B
For Z = 1 To FIN_C
For AA = 1 To FIN_D
FIN_E = FIN_E + 1

Cells(FIN_E, 6) = Cells(X, 1)
Cells(FIN_E, 7) = Cells(Y, 2)
Cells(FIN_E, 8) = Cells(Z, 3)
Cells(FIN_E, 9) = Cells(AA, 4)
Next AA
Next Z
Next Y
Next X

End Sub```

Un Saludo.

##### Share on other sites

Hola @eugeniocol, una solución simple y sin alterar el código que ya tenias es esta:

```Sub COMBINAR_4()

Columns(5).ClearContents
Columns(6).ClearContents
Columns(7).ClearContents
Columns(8).ClearContents
Columns(9).ClearContents

FIN_A = Range("A1", Range("A" & Rows.Count).End(xlUp)).Rows.Count
FIN_B = Range("B1", Range("B" & Rows.Count).End(xlUp)).Rows.Count
FIN_C = Range("C1", Range("C" & Rows.Count).End(xlUp)).Rows.Count
FIN_D = Range("D1", Range("D" & Rows.Count).End(xlUp)).Rows.Count

For x = 1 To FIN_A
For Y = 1 To FIN_B
For Z = 1 To FIN_C
For AA = 1 To FIN_D
FIN_E = FIN_E + 1
On Error GoTo c
c:       If Err.Number = 1004 Then t = t + 5: FIN_E = 1: On Error GoTo -1
Cells(FIN_E, 6 + t) = Cells(x, 1)
Cells(FIN_E, 7 + t) = Cells(Y, 2)
Cells(FIN_E, 8 + t) = Cells(Z, 3)
Cells(FIN_E, 9 + t) = Cells(AA, 4)
Next AA
Next Z
Next Y
Next x

End Sub```

Saludos.

##### Share on other sites
Hace 15 horas, AlexanderS dijo:

Hola @eugeniocol, una solución simple y sin alterar el código que ya tenias es esta:

```
Sub COMBINAR_4()

Columns(5).ClearContents
Columns(6).ClearContents
Columns(7).ClearContents
Columns(8).ClearContents
Columns(9).ClearContents

FIN_A = Range("A1", Range("A" & Rows.Count).End(xlUp)).Rows.Count
FIN_B = Range("B1", Range("B" & Rows.Count).End(xlUp)).Rows.Count
FIN_C = Range("C1", Range("C" & Rows.Count).End(xlUp)).Rows.Count
FIN_D = Range("D1", Range("D" & Rows.Count).End(xlUp)).Rows.Count

For x = 1 To FIN_A
For Y = 1 To FIN_B
For Z = 1 To FIN_C
For AA = 1 To FIN_D
FIN_E = FIN_E + 1
On Error GoTo c
c:       If Err.Number = 1004 Then t = t + 5: FIN_E = 1: On Error GoTo -1
Cells(FIN_E, 6 + t) = Cells(x, 1)
Cells(FIN_E, 7 + t) = Cells(Y, 2)
Cells(FIN_E, 8 + t) = Cells(Z, 3)
Cells(FIN_E, 9 + t) = Cells(AA, 4)
Next AA
Next Z
Next Y
Next x

End Sub```

Saludos.

En principio funcionan ok l

Pero el libro se hace muy pesado, la solución que no pensé ni comente es que los datos repetidos más de una  vez  en  fila por ejemplo 1 1 2 3  o sea el 1 me sobra la fila entera.

Esta macro (no mia) lo hace y elimina un montón de filas.

```Sub COMBINAR_4()

For H = 5 To 35
Columns(H).ClearContents
Next H
M = 6
N = 7
O = 8
P = 9
FIN_A = Range("A1", Range("A" & Rows.Count).End(xlUp)).Rows.Count
FIN_B = Range("B1", Range("B" & Rows.Count).End(xlUp)).Rows.Count
FIN_C = Range("C1", Range("C" & Rows.Count).End(xlUp)).Rows.Count
FIN_D = Range("D1", Range("D" & Rows.Count).End(xlUp)).Rows.Count

For x = 1 To FIN_A
For Y = 1 To FIN_B
For Z = 1 To FIN_C
For AA = 1 To FIN_D
If FIN_E > 1000000 Then
FIN_E = 0
M = M + 5
N = N + 5
O = O + 5
P = P + 5
End If
If Cells(x, 1).Value <> Cells(Y, 2).Value Then
If Cells(x, 1).Value <> Cells(Z, 3).Value Then
If Cells(x, 1).Value <> Cells(AA, 4).Value Then
If Cells(Y, 2).Value <> Cells(Z, 3).Value Then
If Cells(Y, 2).Value <> Cells(AA, 4).Value Then
If Cells(Z, 3).Value <> Cells(AA, 4).Value Then
FIN_E = FIN_E + 1
Cells(FIN_E, M) = Cells(x, 1)
Cells(FIN_E, N) = Cells(Y, 2)
Cells(FIN_E, O) = Cells(Z, 3)
Cells(FIN_E, P) = Cells(AA, 4)
End If
End If
End If
End If
End If
End If
Next AA
Next Z
Next Y
Next x
End Sub```

##### Share on other sites

Entonces damos el tema por solucionado.?

ok

Gracias.

• ### Posts

• Hola Cristian1985 Buena aporte , voy a considerar tu propuesta gracias Aqui adjunto el archivo trabajo del tema en cuestion , la idea inicial q tenia era a una tabla dinamica agregar talvez una columna calculada o algo por estilo que haga el calculo de la suma del año  Producto.xlsx
• hola expertos buenas tardes mi idea es la siguiente en este libro1. un mensaje que me diga que celdas desea marcar de color rojo en la hoja22. de acuerdo al listado numerico de la columna A de hoja actual enviar el listado de numeros que cumple con la posicion del color de la hoja2 Libro1.xlsm
• Recién releeo lo que escribí, 😄  Christian, lo que quise decir, es que lo que entendí de la definición de su problema, fue lo mismo que tu (al ver como lo resolviste), pero su ejemplo  nada, porque no corresponde a lo que definió. 😂 jaja.. ya mejor no sigo... 😷😵
• Ya casi lo tengo, pero no será hasta mañana, que aquí donde estoy ya es hora de cenar. 😉
• Buenos días. He preparado una plantilla para organizar los turnos de trabajo con una duración mensual. Me gustaría saber si es posible que a la hora de imprimirlo, se imprimiese por semanas, manteniendo las tres primeras columnas, donde apararecen los distintos turnos y lugares de trabajo, y si, por ejemplo, la primera semana del mes empieza en miercoles, el rango empiece en dicho dia hasta el domingo. Gracias de antemano por vuestra ayuda. Saludos, Ignacio Modelo2.xlsm