cual es la mejor foma para copiar una formula

17/02/2005 - 16:53 por fredy | Informe spam
tengo una hoja con 20000 registros y quiero en una columna realizar un
calculo por medio de macros , la formula es un buscarv para determinar los
valores repetidos asi:

Selection.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C[-1]:R[-1]C[-1],1,FALSE)"

mi pregunta es he pensado en dos opciones para ejecutar esta formula una es
seleccionando el rango completo desde la celda 2 hasta la 20000 y copiar la
formula y luego con un pegado especial dejar solo los valores y la otra es
con un bucle for next ir ejecutando la formula celda a celda y convirtiendo
el resultado en valor para no cargar con formulas el archivo

que me aconsejan o sera que hay otra forma mas facil y rapida de hacerlo lo
que pasa es que este es 1 archivo de 12 es decir son casi 240000 registros y
pues la verdad ... es largo

muchas gracias

Preguntas similare

Leer las respuestas

#1 KL
17/02/2005 - 18:03 | Informe spam
Fredy,

No estoy seguro de q entienda q es lo q quieres conseguir con tu formula
pero quizas te valga esto:

Sub testFredy()
With Application.WorksheetFunction
Range("B1:B20000") = .VLookup(Range("A1:A20000"), _
Range("$A$1:$A$20000"), 1, False)
End With
End Sub

Saludos,
KL

"fredy" wrote in message
news:
tengo una hoja con 20000 registros y quiero en una columna realizar un
calculo por medio de macros , la formula es un buscarv para determinar los
valores repetidos asi:

Selection.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C[-1]:R[-1]C[-1],1,FALSE)"

mi pregunta es he pensado en dos opciones para ejecutar esta formula una
es
seleccionando el rango completo desde la celda 2 hasta la 20000 y copiar
la
formula y luego con un pegado especial dejar solo los valores y la otra es
con un bucle for next ir ejecutando la formula celda a celda y
convirtiendo
el resultado en valor para no cargar con formulas el archivo

que me aconsejan o sera que hay otra forma mas facil y rapida de hacerlo
lo
que pasa es que este es 1 archivo de 12 es decir son casi 240000 registros
y
pues la verdad ... es largo

muchas gracias
Respuesta Responder a este mensaje
#2 fredy
17/02/2005 - 18:25 | Informe spam
gracias KL
tengo una columna (a) donde esta el codigo del registro este se puede
repetir el alguno de los 20000 registros, debo eliminar los registros
repetidos de abajo hacia arriba , mi formula (en una columna paralela a la de
los codigos) lo que hace es verificar que registro se encuentra repetido,
luego si esta repetido lo elimino...

por eso mi pregunta de cual era la forma mas conveniente que realizara la
formula para todo el rango ó con el bucle ir ejecutando la formula celda a
celda
"KL" wrote:

Fredy,

No estoy seguro de q entienda q es lo q quieres conseguir con tu formula
pero quizas te valga esto:

Sub testFredy()
With Application.WorksheetFunction
Range("B1:B20000") = .VLookup(Range("A1:A20000"), _
Range("$A$1:$A$20000"), 1, False)
End With
End Sub

Saludos,
KL

"fredy" wrote in message
news:
> tengo una hoja con 20000 registros y quiero en una columna realizar un
> calculo por medio de macros , la formula es un buscarv para determinar los
> valores repetidos asi:
>
> Selection.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C[-1]:R[-1]C[-1],1,FALSE)"
>
> mi pregunta es he pensado en dos opciones para ejecutar esta formula una
> es
> seleccionando el rango completo desde la celda 2 hasta la 20000 y copiar
> la
> formula y luego con un pegado especial dejar solo los valores y la otra es
> con un bucle for next ir ejecutando la formula celda a celda y
> convirtiendo
> el resultado en valor para no cargar con formulas el archivo
>
> que me aconsejan o sera que hay otra forma mas facil y rapida de hacerlo
> lo
> que pasa es que este es 1 archivo de 12 es decir son casi 240000 registros
> y
> pues la verdad ... es largo
>
> muchas gracias



Respuesta Responder a este mensaje
#3 KL
17/02/2005 - 18:33 | Informe spam
Fredy,

El problema es q la funcion VLOOKUP no te dira si hay repetidos sino q si
hay al menos una ocurrencia del valor buscado en el rango, por lo cual
corres el riesgo de eliminar todos.

Para detectar repeticiones yo usaria COUNTIF

Saludos,
KL

"fredy" wrote in message
news:
gracias KL
tengo una columna (a) donde esta el codigo del registro este se puede
repetir el alguno de los 20000 registros, debo eliminar los registros
repetidos de abajo hacia arriba , mi formula (en una columna paralela a la
de
los codigos) lo que hace es verificar que registro se encuentra repetido,
luego si esta repetido lo elimino...

por eso mi pregunta de cual era la forma mas conveniente que realizara la
formula para todo el rango o con el bucle ir ejecutando la formula celda a
celda
"KL" wrote:

Fredy,

No estoy seguro de q entienda q es lo q quieres conseguir con tu formula
pero quizas te valga esto:

Sub testFredy()
With Application.WorksheetFunction
Range("B1:B20000") = .VLookup(Range("A1:A20000"), _
Range("$A$1:$A$20000"), 1, False)
End With
End Sub

Saludos,
KL

"fredy" wrote in message
news:
> tengo una hoja con 20000 registros y quiero en una columna realizar un
> calculo por medio de macros , la formula es un buscarv para determinar
> los
> valores repetidos asi:
>
> Selection.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C[-1]:R[-1]C[-1],1,FALSE)"
>
> mi pregunta es he pensado en dos opciones para ejecutar esta formula
> una
> es
> seleccionando el rango completo desde la celda 2 hasta la 20000 y
> copiar
> la
> formula y luego con un pegado especial dejar solo los valores y la otra
> es
> con un bucle for next ir ejecutando la formula celda a celda y
> convirtiendo
> el resultado en valor para no cargar con formulas el archivo
>
> que me aconsejan o sera que hay otra forma mas facil y rapida de
> hacerlo
> lo
> que pasa es que este es 1 archivo de 12 es decir son casi 240000
> registros
> y
> pues la verdad ... es largo
>
> muchas gracias



Respuesta Responder a este mensaje
#4 fredy
17/02/2005 - 20:21 | Informe spam
hola KL
a mi me funciona si quiero saber es cuales estan repetidas. por eso al
utilizar la formula buscarv devolviendo el valor de la columna 1 el me
identifica con el codigo la repetida y con un #n/a (error) las que no estan
repetidas, luego las que no son error las elimino ya que estas son repetidas

no entiendo por que dices que tengo el riezgo de eliminarlas todas si cuando
la formula da error simplemente esa fila no se elimina

la busqueda la realizo sin tener en cuenta en el rango de busqueda la celda
que busco es decir que para evaluar la celda a1 tomo el rango desde a2 hasta
el final

lo que pasa es que aplicando esta formula a las 20000 celdas se relentiza el
computador por eso en ocasiones realizo bucles donde aplico la formula y pego
le respuesta como valor.

queria saber cual de las dos alternativas me deja funcionar mejor el pc o si
existe otra forma de realizar esta eliminacion de filas

muchas gracias
:D
"KL" wrote:

Fredy,

El problema es q la funcion VLOOKUP no te dira si hay repetidos sino q si
hay al menos una ocurrencia del valor buscado en el rango, por lo cual
corres el riesgo de eliminar todos.

Para detectar repeticiones yo usaria COUNTIF

Saludos,
KL

"fredy" wrote in message
news:
> gracias KL
> tengo una columna (a) donde esta el codigo del registro este se puede
> repetir el alguno de los 20000 registros, debo eliminar los registros
> repetidos de abajo hacia arriba , mi formula (en una columna paralela a la
> de
> los codigos) lo que hace es verificar que registro se encuentra repetido,
> luego si esta repetido lo elimino...
>
> por eso mi pregunta de cual era la forma mas conveniente que realizara la
> formula para todo el rango o con el bucle ir ejecutando la formula celda a
> celda
> "KL" wrote:
>
>> Fredy,
>>
>> No estoy seguro de q entienda q es lo q quieres conseguir con tu formula
>> pero quizas te valga esto:
>>
>> Sub testFredy()
>> With Application.WorksheetFunction
>> Range("B1:B20000") = .VLookup(Range("A1:A20000"), _
>> Range("$A$1:$A$20000"), 1, False)
>> End With
>> End Sub
>>
>> Saludos,
>> KL
>>
>> "fredy" wrote in message
>> news:
>> > tengo una hoja con 20000 registros y quiero en una columna realizar un
>> > calculo por medio de macros , la formula es un buscarv para determinar
>> > los
>> > valores repetidos asi:
>> >
>> > Selection.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C[-1]:R[-1]C[-1],1,FALSE)"
>> >
>> > mi pregunta es he pensado en dos opciones para ejecutar esta formula
>> > una
>> > es
>> > seleccionando el rango completo desde la celda 2 hasta la 20000 y
>> > copiar
>> > la
>> > formula y luego con un pegado especial dejar solo los valores y la otra
>> > es
>> > con un bucle for next ir ejecutando la formula celda a celda y
>> > convirtiendo
>> > el resultado en valor para no cargar con formulas el archivo
>> >
>> > que me aconsejan o sera que hay otra forma mas facil y rapida de
>> > hacerlo
>> > lo
>> > que pasa es que este es 1 archivo de 12 es decir son casi 240000
>> > registros
>> > y
>> > pues la verdad ... es largo
>> >
>> > muchas gracias
>>
>>
>>



Respuesta Responder a este mensaje
#5 DF
19/02/2005 - 16:47 | Informe spam
Hola

Como dice KL, la funcion contar.si o countif al parecer es la mas eficiente.
A mi me parece mas natural buscar los repetidos asi.

CODIGO REPETIDOS FORMULA
1 0 =COUNTIF($A$1:$A1,A2)
2 0 =COUNTIF($A$1:$A2,A3)
3 0 =COUNTIF($A$1:$A3,A4)
12 0 =COUNTIF($A$1:$A4,A5)
3 1 =COUNTIF($A$1:$A5,A6)
2 1 =COUNTIF($A$1:$A6,A7)
1 1 =COUNTIF($A$1:$A7,A8)
4 0 =COUNTIF($A$1:$A8,A9)
3 2 =COUNTIF($A$1:$A9,A10)
5 0 =COUNTIF($A$1:$A10,A11)
6 0 =COUNTIF($A$1:$A11,A12)
4 1 =COUNTIF($A$1:$A12,A13)


Llenas la columna de repetidos, luego copias por valor, y despues eliminas
todas las ocurrencias donde
repetidos es mayor que cero.
Lo puedes hacer manualmente si es algo ocasional o incorporar la formula a
una macro.

Saludos
DF
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida