Saltar al contenido

Interpretar una formula a macro

publicado

Que tal buen día

Tengo una base de datos de números y quisiera hacer que del rango donde esta la base da datos si es menor que 15 se convierta a 0 y si es mayor deje el numero que esta en la celda, con siguiente formula se realiza "=Si(C11<15,0,C11)" , pero quiero ver la opción para que lo haga en la misma celda donde esta el numero no hacer otra tabla de numeros.

Dejo el ejemplo, a como lo tengo horita

Ejemplo 2.xls

Featured Replies

publicado

Pregunta: Veo que en el archivo pusiste tres columnas con diferentes numeros, ¿Quieres que se aga en cada una de las columnas?..

Saludos...

publicado
  • Autor

El chiste seria que en la macro agarrara todo el rango de la tabla para hacer la formula

publicado

Muy buenos dias, aqui adjunto te dejo el archivo con la macro, cuando aplastas el botos 1 se activa automaticamente la macro y cuando habres de nuevo el archivo de vuelve a activar... Si quieres que te descriva los codigos solo dime. Nota: Los rangos estan declarados como tipo Byte, esto con la intencion de no utilizar mucha memoria, si por alguna razon te sale un mensaje de que se desvordo la pila, solo es cuestion de cambiar la declaracion de las variables...

Saludos desde Mexico...

New WinZip File.zip

publicado

Espero que te haya sido de ayuda, si tienes algun inconveniente o problemas con el codigo no dudes en decirmelo...

Saludos desde Mexico...

publicado
  • Autor

Y si quiero otro rango como lo declaro en la macro

publicado

Lo bueno del codigo:


Dim men As Byte
Dim x As Byte
Dim y As Byte

For x = 1 To
If Cells(x, y).Value < 15 Then
Cells(x, y).Value = 0
End If
Next y
Next x
[/CODE]

Es que automaticamente te detecta las ultimas celdas si datos y las ultimas filas sin datos gracias a la siguiente expreción:

[CODE]
Range("A1").End(xlDown).Row 'Esta te lee la ultima fila sin datos
Range("A1").End(xlToRight).Column 'Esta te lee la ultima columna sin datos
[/CODE]

Asi que lo unico que tienes que hacer es meter los datos a lo hoja de exel y se selecciona el rango automaticamente con este codigo...

Saludos desde MEXICO...

publicado

Lo mismo lo puedes hacer con

    Dim Celda As Range
For Each Celda In Activecell.CurrentRegion
If Celda.Value < 15 Then Celda.Value = 0
Next[/CODE]

publicado

Recuerda, si por alguna razon te sale un mesaje de desbordamiento de pila vasta con cambiar lo sigueinte:


Dim x As Byte a Dim x as double
Dim y As Byte a dim y as double

ya que al ponerlos como Byte te da rangos de 0 a 255....
[/CODE]

Saludos...

publicado

Bueno, supongo que ya con esto se da por terminado el tema, claro si no tienen ninguna objeción..!!!

Saludos...

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.