Solo números positivos de una columna en excel

Tengo tres columnas en excel (a, b, c), en "a" esta llena de números positivos y negativos
Y "b" y "c" están vacías, en "b" quiero colocar solo los números positivos y en "c" los negativos, pero que no haya espacio entre ellos.
Osea si solo son 10 positivos y 20 negativos, que b me ocupe de b1 hasta b10 y c me ocupe de c1 a c20, siendo a desde a1 a a30.
Ojala puedas ayudarme saludos

2 respuestas

Respuesta
1
¿Tienes office 03 o 07?...
Para 07 se hace así, es una macro:
En la ficha programador, icono insertar, eliges botón de comando del control activex y lo dibujas en la hoja que quieres hacer la evaluación
le das doble click y te aparecerán dos lineas, entre ellas insertas esto:
For Each celda In Sheets(1).Range("a1", Range("a1").End(xlDown))
referencia = celda.Address(False, False)
If celda.Value < 0 Then
Range("c65000").End(xlUp).Offset(1, 0) = celda.Value
Else
Range("b65000").End(xlUp).Offset(1, 0) = celda.Value
End If
Next celda
Regresas a la hoja, desactivas el modo de diseño y lixto!... la macro se ejecuta cada vez que des click en el botón
esto solo trabaja con las columnas a.b.c si están tus datos en otro lado cambia los rangos de este código.
cualkier duda... x aki ando!
Gracias por tu respuesta, pero la verdad me gustaría saber si esto se puede hacer con algún tipo de fórmula, de no ser así hacerlo con macro pero de forma inmediata, que el solo hecho de agregar números a la columna "a" aparezcan los positivos en la columna "b" y los negativos en la columna "c"
Saludos
El problema con una fórmula es lo de los espacios... pues si quedarían espacios
con la macro lo que puedo hacer es crear un cuadro donde ingreses el valor y la darle click automáticamente se va a positivo o negativo (y si quieres también que se registre el valor en la columna a)
¿Cómo vez?... ¿Te sirve?... por ahorita es lo que se me ocurre...
Ok, ¿y se podrá hacer algo como una función matricial? Mira instale unos complementos que traen nuevas funciones para excel, y dentro de ellas venia una función que cumple con lo que quiero, pero solo cuando se utilizan letras y no con números.
Si sabes algo sobre funciones matriciales me gustaría que me ayudases.
Pasando otro tema, estoy haciendo un programa en vb.net para la universidad y tengo algunas dudas con respecto a la base de datos, ¿tu sabes algo sobre este tema?
Ojala puedas ayudarme. De antemano muchas gracias.
Saludos
Ya lo tengo!:
Es una macro, lo que debes hacer es insertar el código que te voy a pasar en la ventana vba, ahí veras de lado izquierdo una lista con los libros activos, buscas en el que quieres la macro, y en la carpeta microsoft excel objetos de ese mismo libro eliges la hoja donde están tus datos y das doble click, en la ventana que te aparece insertas esto:
Private Sub Worksheet_Change(ByVal Target As Range)
celda = Range("A65000").End(xlUp).Address
positivo = Range("B65000").End(xlUp).Offset(1, 0).Address
negativo = Range("C65000").End(xlUp).Offset(1, 0).Address
If Target.Address = celda Then
If Target < 0 Then
Application.EnableEvents = False
Range(negativo) = Target
Application.EnableEvents = True
Else
Application.EnableEvents = False
Range(positivo) = Target
Application.EnableEvents = True
End If
End If
End Sub
Y con esto ya podrás escribir en la columna a los datos y en automático se enviaran a b (positivos) y c (negativos)
Pruébalas y me dices como te fue, ¿sale?... sobrex!
Te pasaste... funciono super bien... mucha gracias.
No finaleze la pregunta por que necesito saber si sabes vb.net, para un proyecto que tengo en la universidad. Si es posible que me ayudes te lo agradecería muchísimo.
Este es mi correo por cualquier cosa.
[email protected]
Muchas gracias nuevamente.
Saludos
Lo siento albo91, nunca he manejado vb.net...
De hecho solo tengo unos meses usando vba... por lo que he oído vb.net es digamos la evolución de vba, pero no se que hay de nuevo con vb.net
pero cualquier duda que te surja y que sea posible solucionarla con vba o te de una idea para vb.net, ya sabes que por aquí ando y con mucho gusto te ayudo
cuidate...
OK muchas gracias de todas formas.
Volviendo al tema anterior, en la respuesta con la macro que me diste, hay algo malo, primero no me actualiza los datos cuando los cambio ni cuando los borro.
Por ejemplo si cambio algún valor me lo va agregardo abajo y no lo actualiza y ademas cuando borro no se borra y debería borrarse y todos los datos que vienen debajo subir el espacio vacío. (No si me entiendes)
Saludos
Perdón pero eso nunca lo mencionaste... en el primer planteamiento dabas a entender que los datos de la columna a ya los tenias y solo había que colocarlos en b y c de acuerdo a su signo... en el segundo planteamiento solo diste a entender que querías que se colocaran en b o c al momento de que tu agregaras un valor en a pero nunca dijiste que los valores ya escritos podían cambiar y que querías que cambiaran junto con las columnas b y c.
Ni creas que te estoy criticando eh... es solo para ayudarte a mejorar tus planteamientos y que tus expertos en el futuro no tengan excusas en discrepancias en el código (que aunque no lo creas hay algunos problemillas por eso... jaja)
Creo que te lo tengo que volver a cambiar a un bucle for... dejame ver si ahorita te lo termino... sino mañana te lo mando.
Saludos!... cuidate!
Ok, disculpa por no saber explicarme bien. Ahora te explico que es lo que quiero.
Es para un trabajo de la universidad, mira en excel debo contabilizar las entradas y salidas de una caja (gastos e ingresos), para ello en la columna "A" se deberán ingresar los positivos y negativos, los cuales a medida que vayan ingresando deberán reflejarse en las columna "B" (para los positivos) y "C" para los negativos. Y si alguna vez se modifican alguno de ellos deberán cambiar también el de la columna correspondiente. Y si se elimina (por ejemplo el valor que en el puesto n4 de los positivos, todos los demás deberán subir un espacio, ya que no deberá haber espacios vacíos entre los valores)
Saludos
ok... no hay problema de vdd!
Mira el codigo es asi:Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Range("B:C").ClearContents
For Each celda In Sheets(1).Range("a1", Range("a65000").End(xlUp))
referencia = celda.Address(False, False)
If celda.Value < 0 Then
Range("c65000").End(xlUp).Offset(1, 0) = celda.Value
Else
Range("b65000").End(xlUp).Offset(1, 0) = celda.Value
End If
Next celda
Range("b1") = "POSITIVOS"
Range("C1") = "NEGATIVOS"
End If
End Sub
Saludos!... me dices como te fue... cuidate!
Respuesta

Metí la fórmula en Macros pero me aparece un error 1004 y me resalta en amarillo la primera línea.. ¿por qué? ¿Qué debo hacer? Gracias

Error en:

For Each celda In Sheets(1).Range("a1", Range("a1").End(xlDown))For Each celda In Sheets(1).Range("a1", Range("a1").End(xlDown))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas