Saltar al contenido

Sustituir valores con base a criterios


Recommended Posts

publicado

Buenas tardes solicito de nuevo su apoyo.

En este caso tengo el siguiente problema

si en la columna ("f") esta el valor "0", verificar si el numero de la columna ("d") de la misma fila tiene en otra fila un numero mayor o igual a "1", si es así sustituir el valor "0" de la columna ("f") por el valor "99"

y no tengo ni idea de como hacerlo.

DISCUL UUSTEDES, ADJUNTO OTRO ARCHIVO ESPERANDO SER UN POCO MAS CLARO. COMO LES COMENTABA NO SE COMO ESTIPULAR ESTA CONDICION, SE LOS PUSE UN POQUITO MAS GRAFICO. LES AGRADESCO MUCHO SU APOYO.

SALUDOS CORIDIALES.

EJMPLO 112.xls

publicado

Hola.

Prueba esta macro:

Sub sustituirnumero()
Dim x As Byte
Dim rng As Range
Set rng = Range("F2:F14")
For Each cel In rng
If cel = 0 And cel.Offset(, -2) >= 1 Then
cel.Value = 99
End If
Next
End Sub

Un saludo.

publicado
Hola.

Prueba esta macro:

Sub sustituirnumero()
Dim x As Byte
Dim rng As Range
Set rng = Range("F2:F14")
For Each cel In rng
If cel = 0 And cel.Offset(, -2) >= 1 Then
cel.Value = 99
End If
Next
End Sub

Un saludo.

muchas gracias toldeman pero esta macro me sustituye todos los valores con "0" sin tomar en cuenta los criterios,

si hay un "0" en la columna "f" que revise si el valor que tiene en la columna "d" tiene en otra fila un valor mayor a "0", y si es asi que sustituya el valor "0" de la columna "f", si no que no haga nada.

publicado

oshimate

Gusto en saludarte, se me ocurre algo con formulas, favor revisa el adjunto y comenta.

Toldeman te envio un abrazo desde el sur de America.

Saludos Cordiales

Pedro

- - - - - Mensaje combinado - - - - -

oshimate

Lo proporcionado por Toldeman es tal cual lo que pides en al adjunto.

Revisa el mensaje que pusiste en el adjunto y comenta que es lo que necesitas.

Saludos Cordiales

Pedro

EJMPLO 112_petercien.xls

publicado

Hola a todos,

Oshimate, la macro esta bién, ahora te interpreto de otra forma que la celda anterior en la columna F que precede al valor o debe ser = 1, porque al convertirse a 99 es mayor que 1. luego tendría otro IF.

Sub sustituirnumero()

Dim x As Byte

Dim rng As Range

Set rng = Range("F2:F14")

For Each cel In rng

If cel = 0 And (cel.Offset(, -2) >= 1) Then

If (cel.Offset(-1, 0) = 1) Then

cel.Value = 99

End If

End If

Next

End Sub

Saludos

- - - - - Mensaje combinado - - - - -

Hola a todos,

Oshimate, la macro esta bién, ahora te interpreto de otra forma que la celda anterior en la columna F que precede al valor o debe ser = 1, porque al convertirse a 99 es mayor que 1. luego tendría otro IF.

Sub sustituirnumero()

Dim x As Byte

Dim rng As Range

Set rng = Range("F2:F14")

For Each cel In rng

If cel = 0 And (cel.Offset(, -2) >= 1) Then

If (cel.Offset(-1, 0) = 1) Then

cel.Value = 99

End If

End If

Next

End Sub

Saludos

publicado

Pedro un gusto en tener noticias tuyas, recibe un fuerte abrazo y mis mejores deseos.

En cuanto a la consulta creo que el forero o no ejecuto la macro o yo entendi mal.

Un saludo a todos.

publicado

señores les paso un ejemplo mas completo el codigo solo cambia algunos "0", soy muy nuevo en esto trato de entender el codigo pero aun no lo decifro, como para poderlo editar a lo que necesito.agradesco infinitamente su apoyo.les mando saludos cordiales.

- - - - - Mensaje combinado - - - - -

señores les paso un ejemplo mas completo el codigo solo cambia algunos "0", soy muy nuevo en esto trato de entender el codigo pero aun no lo decifro, como para poderlo editar a lo que necesito.agradesco infinitamente su apoyo.les mando saludos cordiales.

EJMPLO 112 2 ejemplo.xls

publicado
señores les paso un ejemplo mas completo el codigo solo cambia algunos "0", soy muy nuevo en esto trato de entender el codigo pero aun no lo decifro, como para poderlo editar a lo que necesito.agradesco infinitamente su apoyo.les mando saludos cordiales.

- - - - - Mensaje combinado - - - - -

señores les paso un ejemplo mas completo el codigo solo cambia algunos "0", soy muy nuevo en esto trato de entender el codigo pero aun no lo decifro, como para poderlo editar a lo que necesito.agradesco infinitamente su apoyo.les mando saludos cordiales.

Hola.

Sube de nuevo un ejemplo:

En las columnas D Y F pon Los valores originales y en las columnas A Y B pon como deberia de quedar los valores una vez ejecutado el codigo.

Un saludo.

publicado

oshimate

Definitivamente no entiendo

LO QUE PRETENDO ES LO SIGUENTE:

SI EN LA COLUMNA ("F") ESTA EL VALOR "0",

VERIFICAR SI EL NUMERO DE LA COLUMNA ("D") DE LA MISMA FILA TIENE EN OTRA FILA UN NUMERO MAYOR O IGUAL A "1", SI ES ASÍ SUSTITUIR EL VALOR "0" DE LA COLUMNA ("F") POR EL VALOR "99"

Lo que te destaco en rojo me confunde completamente,

Verificar si F = cero, facil.

Verificar si D de la misma fila tiene valor mayor o igual a 1, facil.

Pero eso que "tiene en otra fila un numero mayor o igual a 1", me confunde, ya que todos los valores de la columna D son mayores a 1, y por ende lo que te proponemos cumple con eso.

Ahora si alguien entiende otra cosa le pido por favor me lo explique

Saludos Cordiales

Pedro

publicado
oshimate

definitivamente no entiendo

lo que te destaco en rojo me confunde completamente,

verificar si f = cero, facil.

Verificar si d de la misma fila tiene valor mayor o igual a 1, facil.

Pero eso que "tiene en otra fila un numero mayor o igual a 1", me confunde, ya que todos los valores de la columna d son mayores a 1, y por ende lo que te proponemos cumple con eso.

Ahora si alguien entiende otra cosa le pido por favor me lo explique

saludos cordiales

pedro

jajajajaja yo tambien estoy un poco confundido pero haber.

1:verificar si f = cero

2:verificar el valor de "ese cero" en la columna d.

Un ejemplo.

D f

5 0

5 1

5 0

6 0

6 0

6 0

en este caso el valor de "ese cero" en la columna d es igual a "5"

3:verificar si el valor "5" de la columna d tiene un valor mayor a "0" en la columna f.

4:si es asi que cambie el "ese cero" por el valor 99.

Asi tendria que quedar despues de correr el codigo.

D f

5 99

5 1

5 99

6 0

6 0

6 0

se sustituyen los "0" de la columna f porque el valor 5 de la columna d tiene el valor "1" en la columna f

imaginense que tengo una base de datos de "50000" filas y en la columna d tengo mis ordenes de compra, y en la columna f tengo mis productos.

Imaginense que la orden de compra era de 3 productos, pero 2 de ellos no se despacharon, el identificarlos con el valor 99 seria mas facil para otros codigos que necesite hacer.

Ojala me explique mejor con esto.

Gracias por su esfuerzo

un abrazo desde mexico

publicado
revisa el adjunto, lo realice con funciones, ya que macros no tengo el poder.

Saludos cordiales

pedro

ok al parecer lo hace perfecto. Solo que no entiendo tu formula, podrias ilustrarme un poco mas.

Como la podria adapta a un rango de 50000 filas.?

Archivado

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

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.