publicado el 21 de marzo2 años Hola a todos los del foro Requiero un favor de ustedes, con un macro que me convierta el dato de la columna D de la hoja TXT a número con dos decimales. Los números de esta columna todos ninguno tiene separador de decimales pero todos los últimos dos valores son decimales. macro.xlsm Ejemplo D2 = "60225700 debe ser 602,257.00" D3 = "16123300 debe ser 161,233.00" de antemano muchas gracias y espero alguno me pueda ayudar.
publicado el 21 de marzo2 años Hola. Espero que esta propuesta te sirva, cumple con la solicitud indicada. Saludines. macro.xlsm
publicado el 21 de marzo2 años =TEXTO(VALOR(D2)*0.01,"0.00") Una propuesta con fórmula por si es de interés, solo cambiar la coma por el punto y coma, de acuerdo a tu separador de argumentos. Saludines_2
publicado el 21 de marzo2 años Hola. Lamento que no puse atención a que necesitas el separador de miles. Solo agrega la coma en el formato de VBA celda.NumberFormat = "#,##0.00" O en la fórmula si lo requieres. =TEXTO(VALOR(D2)*0.01,"#,##0.00")
publicado el 21 de marzo2 años Autor Muchas gracias por el macro, un último favor con los valores que están en cero como puedo hacer para que también los cambie a formato número.
publicado el 21 de marzo2 años De acuerdo, si te interesan esos "0" cambia la sentencia por esta: Sub convertirTextoANumerosDecimales() Dim celda As Range For Each celda In Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row) If Len(celda.Value) >= 2 And IsNumeric(celda.Value) Then celda.Value = CDbl(Left(celda.Value, Len(celda.Value) - 2) & "." & Right(celda.Value, 2)) celda.NumberFormat = "###0.00" ElseIf celda.Value = "0" Then celda.Value = 0 celda.NumberFormat = "0.00" End If Next celda End Sub Saludines_3
publicado el 21 de marzo2 años Hola a ambos dejo otra posible solución que contempla también tu nuevo requerimiento. Private Sub CommandButton1_Click(): Application.ScreenUpdating = False With Hoja2 For x = 2 To .Range("D" & Rows.Count).End(xlUp).Row longitud = Len(Range("D" & x)) If longitud > 1 Then .Range("D" & x) = Left(.Range("D" & x), longitud - 2) & "." & Right(.Range("D" & x), 2) .Range("D" & x) = .Range("D" & x) + 0 .Range("D" & x).NumberFormat = "#,##0.00" Else .Range("D" & x) = .Range("D" & x) + 0 .Range("D" & x).NumberFormat = "#,##0.00" End If Next x End With End Sub
publicado el 21 de marzo2 años Hola @JSDJSD Excelente propuesta también. Aprovechando que andas también conectado y cambiando de tema con esta consulta, voy a subir una propuesta a otra consulta del foro: asignacion-de-lotes-automaticamente La estuve leyendo y por fórmulas cae en una referencia circular y le voy a recomendar al consultante una sentencia de VBA, tal vez si en un tiempo que tengas tienes alguna idea diferente. Esta curiosa la consulta, será divertido. Voy para allá a escribir. Saludines
publicado el 21 de marzo2 años hace 21 minutos , Israel Cassales dijo: voy a subir una propuesta a otra consulta del foro: Perfecto, pero lo veo mañana hoy ya no puedo, un saludo
Hola a todos los del foro
Requiero un favor de ustedes, con un macro que me convierta el dato de la columna D de la hoja TXT a número con dos decimales. Los números de esta columna todos ninguno tiene separador de decimales pero todos los últimos dos valores son decimales.
macro.xlsm
Ejemplo
D2 = "60225700 debe ser 602,257.00"
D3 = "16123300 debe ser 161,233.00"
de antemano muchas gracias y espero alguno me pueda ayudar.