Saltar al contenido

Máximos colaboradores

Popular Content

Showing content with the highest reputation on 02/08/24 in all areas

  1. ¡Saludos a todos! Otras opciones pueden ser: =UNIRCADENAS(",";;SI.ERROR(1/DIVIDIRTEXTO(A1;",")^-1;"")) =UNIRCADENAS(",";;ENCOL(1/DIVIDIRTEXTO(A1;",")^-1;2)) ¡Bendiciones!
    1 point
  2. 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,
    1 point
  3. Que tal a todos, solo por aportar me permito proponer otra posible solución alternativa: =UNIRCADENAS(",", 1, DIVIDIRTEXTO(A1, {",", 0})) Espero les sea útil.
    1 point
  4. 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
    1 point
  5. 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. AYUDA EXCEL.xlsb
    1 point
  6. Prueba y comenta Private Sub Worksheet_Change(ByVal Target As Range) Dim busca As Range Dim rg As Range Dim cont As Double Dim i As Integer If InStr(1, Target.Address, ":") = 0 And Not Intersect(Target, Range("D16:D110")) Is Nothing Then If Target.Offset(0, 2) = "" Then ' si la columna C esta vacia continuamos hoja = Range("W2") ' nombre de la hoja L = Split(Sheets(hoja).Cells(4, Columns.Count).End(xlToLeft).Address, "$") ' ultima columna llena Set rg = Sheets(hoja).Range("C5:" & L(1) & "4") ' rango de la tabla donde buscar 'cambie el No 2 por 4 pensando que es la fila Set busca = rg.Find(Target, LookIn:=xlValues, LookAt:=xlWhole) ' buscamos en el rango If busca Is Nothing Then Exit Sub ' si no lo encuentra sale cont = 1 Do While busca.Offset(cont, 0).Value <> "" ' mientras existan datos en la tabla Target.Offset(cont - 1, 3) = busca.Offset(cont, 0) ' columna donde pegara la informacion If cont = 1 Then Target.Offset(cont - 1, 3).Font.Bold = True ' negrita Target.Offset(cont - 1, 3).Font.Color = 6567712 ' color azul Target.Offset(cont - 1, 1) = Range("Ag2") 'Chr(149)'coloca el caracter indicado Target.Offset(cont - 1, 1).VerticalAlignment = xlTop ' alinear el simbolo en c arriba 'Target.Offset(cont - 1, 25) = Hoja ' nombre de la hoja, para saber de donde viene los datos Else Target.Offset(cont - 1, 3).Font.Bold = False ' quita negrita Target.Offset(cont - 1, 3).Font.Color = 0 ' quita color Target.Offset(cont - 1, 20) = "" ' borra coluna C ( donde capturamos la hoja " Target.Offset(cont - 1, 1) = "" End If cont = cont + 1 Loop For ini = 1 To Range("t1") Target.Offset(cont - 1, 0).Select If Range("t1") <= Target Then Exit For Else ActiveCell = Target + 1 End If With Hoja1 vuf = .Range("g" & .Rows.Count).End(xlUp).Row ' cambie la D x E donde copiara ahoara .PageSetup.PrintArea = .Range("e1:r" & vuf).Address(, , , 1) End With Exit Sub Next End If End If End Sub
    1 point
×
×
  • 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.