Bueno, parece que después de todo este viernes será mas que productivo. Dos consultas resueltas y ahora... va la tercera. Menos mal que: 1) revisé el correo y 2) estoy de licencia, así que tengo tiempo para mi querido blog.
Vamos al tema: Fabián tiene una lista de números, entre los cuales se hallan algunos negativos:
Necesita un procedimiento que coloque en las columna D los valores menores a 0 (cero) y en la E los valores que sean mayores a cero.
Como siempre, existen muchas formas de resolver esta cuestión. Vamos a las dos mas sencillas.
1) Con funciones:
Escribimos en D1: =SI(C1<=0;C1;"")
es decir: si el valor de C1 es menor o igual a cero, poné C1, sino nada. Pegamos la función hasta el final de la lista:
todos los valores menores o iguales a 0 están ahora en la columna D
Vamos a E1 y escribimos: =SI(C1>0;C1;"")
si C1 es mayor a 0, devolveme C1, sino nada. Pegamos hasta el final de la lista:
negativos en D, positivos en E
Si quisiéramos que los menores a cero no tengan mas su signo menos, hacemos esto:
Escribimos en D1: =SI(C1<=0;ABS(C1);"")
Escribimos en D1: =SI(C1<=0;C1 * -1;"")
o bienEscribimos en D1: =SI(C1<=0;ABS(C1);"")
Multiplicando a C1 por menos 1, cambiamos su valor a positivo. O bien utilizamos la funcion ABS(), que nos devuelve el valor absoluto de un numero.
1) Con Macros:
para automatizar la tarea y evitar el ingreso de funciones manualmente. Vamos a realizarlo de la siguiente forma: el usuario deberá seleccionar el rango en donde se encuentran los numeros (en este caso C1:C8) y nuestro codigo VBA colocará en la primer columna a la derecha los negativos y en la siguiente los iguales o mayores a cero:
El Sub arriba descripto nos arroja el siguiente resultado:
Suerte Fabian y espero que el ejemplo te sirva en el proyecto sobre el cual me comentabas.
1) Con Macros:
para automatizar la tarea y evitar el ingreso de funciones manualmente. Vamos a realizarlo de la siguiente forma: el usuario deberá seleccionar el rango en donde se encuentran los numeros (en este caso C1:C8) y nuestro codigo VBA colocará en la primer columna a la derecha los negativos y en la siguiente los iguales o mayores a cero:
Sub SepararNegativos() Dim Celda As Range 'recorro la coleccion de celdas del objeto Selection '(que es el rango seleccionado x el usuario) For Each Celda In Selection.Cells 'si el valor de la celda es numérico If IsNumeric(Celda.Value) Then 'si es menor a cero: If Celda.Value < 0 Then 'coloco el valor absoluto (abs) en la columna 'siguiente: Celda.Next(1, 1).Value = Abs(Celda.Value) ElseIf Celda.Value >= 0 Then 'si es igual o mayor a cero, coloco el valor 'de la celda dos columnas a la derecha: Celda.Next(1, 2).Value = Celda.Value End If End If Next Celda 'destruyo el objeto para liberar recursos del sistema Set Celda = Nothing End Sub
El Sub arriba descripto nos arroja el siguiente resultado:
Comentarios
Publicar un comentario