Saltar al contenido

Recommended Posts

publicado

Hola buenas tardes,
Tengo duda acerca de cómo obtener solo valores mayores a 0 de una celda con varios números.

El ejemplo es:

En una celda tengo: 0,2,3,0,5 están separados por comas
Y lo que deseo es que en otra celda solo me de los mayores a cero, así: 2,3,5

Muchas gracias al que pueda ayudarme.

publicado

Hola,

Suponiendo que el texto esté en A1, prueba con:

=SUSTITUIR((SUSTITUIR(A1;"0, ";""));"0";"")

Saludos,

publicado

Elimine una respuesta anterior donde explicaba que (yo) no tenía la experiencia para hacer eso que pides con fórmula, y ofrecerte una personalizada pero ya tienes una propuesta del Maestro que podrías utilizar.

Como ya la tenía terminada la dejo de todos modos pero es con VBA.

Captura.jpg

 

AYUDA EXCEL.xlsb

publicado
hace 8 minutos , Victor7 dijo:

Hola,

Suponiendo que el texto esté en A1, prueba con:

=SUSTITUIR((SUSTITUIR(A1;"0, ";""));"0";"")

Saludos,

Hola, muchas gracias por responder.

Con esa fórmula me quedo:   , 2 ,   ,   , 53
¿Habrá forma de que solo quede así: 2, 53?


Este fue solo uno de los ejemplos, pero también puede que sea así 2,3,0,0,5
El cero o el número mayor a cero van a estar en diferentes posiciones.
 

publicado

Hola de nuevo a ambos,

Bueno, a mí me da el resultado correcto...

Sin embargo me he dado cuenta de que fallará si ponemos cifras como 10, 100, 1000,...... ya que eliminará sólo los 0 y hará cosas raras.

Esta otra fórmula sí que creo que hace lo correcto:

=LET(a;DIVIDIRTEXTO(ESPACIOS(SUSTITUIR(A1;",";" "));" ");UNIRCADENAS(", ";;FILTRAR(a;a<>"0");;))

Subo un archivo con los 2 resultados.

Saludos,

sustituir (B).xlsx

publicado

Que tal a todos, solo por aportar me permito proponer otra posible solución alternativa:

=UNIRCADENAS(",", 1, DIVIDIRTEXTO(A1, {",", 0}))

Espero les sea útil.

publicado

Hola de nuevo a todos,

@RomanQH, tu consulta se ha convertido en un interesante problema.  ¡Gracias por plantearlo!

Yo al principio no me fijé bien, y tomé el grupo de números con un espacio tras la coma.  Después vi que me equivoqué, y además no se me ocurrió pensar que podría haber más de un 0, o números con más de 1 cifra; por eso la primera fórmula que pasé no funcionaría en algunos casos determinados.

La cuestión es que algunas de las propuestas planteadas hasta ahora (incluso la mía) puede que no den los resultados esperados. Supongamos, por ejemplo: 2,03,108,0,5.  El segundo número lleva un 0 a la izquierda (03) y ahí no tengo claro qué resultado es el correcto.  Pero ese 108, según qué fórmula se emplee, se comerá  el 0 intermedio.

Otra posible variable que se me ocurrió es que existan números negativos, por ejemplo: 5,3,0,-8,6  Tu demanda inicial es "obtener sólo valores mayores a 0", pero tal vez querías referirte a "eliminar los 0".  Aquí también podría ser importante la interpretación correcta.

En fin, he corregido mi última aportación dejándola así:

=LET(a;DIVIDIRTEXTO(SUSTITUIR(A1;",";" ");" ");UNIRCADENAS(",";;FILTRAR(a;a<>"0");;))

que tiene en cuenta que no existen espacios en blanco entre números, tras la coma.

Repito: ¡Muy interesante problema!

Saludos,

publicado
hace 18 horas, Israel Cassales dijo:

Elimine una respuesta anterior donde explicaba que (yo) no tenía la experiencia para hacer eso que pides con fórmula, y ofrecerte una personalizada pero ya tienes una propuesta del Maestro que podrías utilizar.

Como ya la tenía terminada la dejo de todos modos pero es con VBA.

Captura.jpg

 

AYUDA EXCEL.xlsb 12.65 kB · 3 descargas

Muchas gracias, hasta ahorita tuve chance de probar el método tuyo y el de @Victor7 y los dos me funcionaron para lo que necesitaba.
Muy agradecido con los aportes.

publicado
hace 16 horas, Oscar_MRF dijo:

Que tal a todos, solo por aportar me permito proponer otra posible solución alternativa:

=UNIRCADENAS(",", 1, DIVIDIRTEXTO(A1, {",", 0}))

Espero les sea útil.

Gracias por el aporte, con esta posible solución al momento de poner un número que tuviera 0 por ejemplo 105 ya no mostraba lo requerido.
Con los otros aportes ya se pudo solucionar eso, gracias por participar 👍

publicado
hace 6 horas, Victor7 dijo:

Hola de nuevo a todos,

@RomanQH, tu consulta se ha convertido en un interesante problema.  ¡Gracias por plantearlo!

Yo al principio no me fijé bien, y tomé el grupo de números con un espacio tras la coma.  Después vi que me equivoqué, y además no se me ocurrió pensar que podría haber más de un 0, o números con más de 1 cifra; por eso la primera fórmula que pasé no funcionaría en algunos casos determinados.

La cuestión es que algunas de las propuestas planteadas hasta ahora (incluso la mía) puede que no den los resultados esperados. Supongamos, por ejemplo: 2,03,108,0,5.  El segundo número lleva un 0 a la izquierda (03) y ahí no tengo claro qué resultado es el correcto.  Pero ese 108, según qué fórmula se emplee, se comerá  el 0 intermedio.

Otra posible variable que se me ocurrió es que existan números negativos, por ejemplo: 5,3,0,-8,6  Tu demanda inicial es "obtener sólo valores mayores a 0", pero tal vez querías referirte a "eliminar los 0".  Aquí también podría ser importante la interpretación correcta.

En fin, he corregido mi última aportación dejándola así:

=LET(a;DIVIDIRTEXTO(SUSTITUIR(A1;",";" ");" ");UNIRCADENAS(",";;FILTRAR(a;a<>"0");;))

que tiene en cuenta que no existen espacios en blanco entre números, tras la coma.

Repito: ¡Muy interesante problema!

Saludos,

¡Muchas gracias por la solución!
Funciona tal cual para lo que necesitaba 👍

publicado

¡Saludos a todos!

Otras opciones pueden ser:

=UNIRCADENAS(",";;SI.ERROR(1/DIVIDIRTEXTO(A1;",")^-1;""))
=UNIRCADENAS(",";;ENCOL(1/DIVIDIRTEXTO(A1;",")^-1;2))

¡Bendiciones!

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • 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.