|
ah pues pensaba q sería más rapido,...tengo un rango de 5 columnas,...hago una macro donde concateno 4 columnas de esas cinco y copio el resultado a otro hoja... si hago esa macro usando un bucle, a partir de las diez mil filas me va un poco lento, en cambio si cargo una matriz para lograr eso y luego la vuelco en un rango, va bastante bastante más rapido...obtenida esa fila en una matriz , es cuando quiero contar cuantas veces se repite cada elemento hasta su posición y solo lo se hacer volcando el resultado en un rango y usar la funcion contar.si...
Sub ContarMatriz()
Dim i As Integer, concatenado As Integer
Dim rang As Range
Dim matriz() As String
Set rang = Worksheets("Hoja1").Range("A1").CurrentRegion
ReDim matriz(1 To rang.Rows.Count)
For i = 1 To rang.Rows.Count
matriz(i) = rang(i, 2) & "_" & rang(i, 3) & "_" & rang(i, 4) & "_" & rang(i, 5)
Next i
Range(Cells(1, 6), Cells(rang.Rows.Count, 6)) = Application.WorksheetFunction.Transpose(matriz)
For i = 1 To rang.Rows.Count
concatenado = Application.WorksheetFunction.CountIf(Range(Cells(1, 6), Cells(i, 6)), Cells(i, 6))
matriz(i) = rang(i, 2) & "_" & rang(i, 3) & "_" & rang(i, 4) & "_" & rang(i, 5) & "_" & concatenado
Next i
Range(Cells(1, 6), Cells(rang.Rows.Count, 6)) = Application.WorksheetFunction.Transpose(matriz)
End Sub
hace lo q le pido perfectamente pero para rangos grandes me va lento, y aunque no pretendo emular contar.si pq nunca lo hare mejor q la funcion de excel, quizás aquí no sea la función más apropiada de usar o quizás sí, no sé,...la cuestión es q me ha cabreado no saberlo hacer sin usar la función contar.si ;P
si no me he explicado bien, dimelo por favor, agradezco tu interés, gracias.
Salut.
|