Jump to content

Eliminar caracter de hoja de calculo


pinoji

Recommended Posts

Buenos días foristas.

Nuevamente por acá.  Acaban de darme una tarea nueva en mi trabajo y consiste en hacer varios cálculos a las nominas.

Yo trabajo con un Sistema de Nominas Profesional (Abaco), que importa los datos de Otro Sistema (También Profesional) (SARH) que es donde se generan las Pre-Nóminas, pero por alguna razón creemos que no esta haciendo correctamente el calculo. Los diseñadores del Programa se fueron del país y todo esto esta medio ¨Trabado¨ , pero buen, eso es historia, lo que sucede es que yo puedo exportar estas nominas los mismo en .xls como en .csv, yo lo exporte a .xls y después de algunos arreglos de manera manual, me queda bien para mi propósito, pero existen un caracter al final de cada celda que no se como eliminarlos, porque necesito hacer cálculos con los números y esto me interfiere.

Por favor, alguien puede ayudarme.

Adjunto archivo

Gracias de antemano.

Saludos

Pino

Nominas Marzo.xls

Link to comment
Share on other sites

Prueba esto:

Sub depura()
    
    uc = ActiveSheet.Rows("1").Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
    ur = ActiveSheet.Columns("b").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
    
    For r = 1 To ur
        For c = 1 To uc
            Z = InStr(Cells(r, c), "")
            If Z > 0 Then
                Cells(r, c) = Left(Cells(r, c), Z - 1)
            End If
        Next
    Next
End Sub

 

Link to comment
Share on other sites

Hola

Otra opción (pero sin macros) podría ser meterle fórmula...

=SI(NO(ESERROR(VALOR(SUSTITUIR([@Columna1];CARACTER(1);""))));VALOR(SUSTITUIR([@Columna1];CARACTER(1);""));SUSTITUIR([@Columna1];CARACTER(1);""))

Pero esa fórmula sería mucho más corta con la función LET (pero no tengo Office 365)

Otra forma, también con fórmulas es:

=SI.ERROR(VALOR(LIMPIAR([@Columna1]));[@Columna1])

Link to comment
Share on other sites

Ya que lo tenia echo lo paso

Sub limpiar_caracter()
Dim Rango As Range
Dim Dato() As String
Set Rango = Range("A1").CurrentRegion

Application.ScreenUpdating = False

For Each Rango In Rango
 If Rango.Value <> "" Then
  Dato = Split(CStr(Rango.Value), Chr(1))
  Rango.Formula2Local = Dato(0)
 End If
Next

Application.ScreenUpdating = True
End Sub

Es mas lento, Saludos

Nominas_Marzo_V1.xlsm

Link to comment
Share on other sites

Buenas tardes foristas.

Buenas tardes Janlui, buenas tardes Diego, buenas tardes Jasall.

Todas son excelentes propuestas y todas me sirvieron (como era de esperar). Verdad que son lo máximo.

Yo verdaderamente no sabia cual era ese caracter (ASCII), porque quizás con Reemplazar lo hubiera resuelto y no pensé en ninguna de sus opciones, aunque no creo que hubiera llegado hasta ahí, aun mis conocimientos no son tan amplios.

Les agradezco su tiempo y sus respuestas.

Mis respetos a los tres y al resto de los miembros del Foro.

Saludos

Pino

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • 58 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      166
    • Comments
      89
    • Reviews
      25

    Latest File
    By pegones1

    1    0

  • Crear macros Excel

  • Posts

    • Lo siento, no se como hacerlo. Te adjunto el fichero. bdLigaEndesa.xlsm
    • Antoni creo que sí, es por mi ansia de escribir 😅 Uno cuando es nobel siempre coge el camino mas largo. Muy bueno y breve. Saludos.  
    • tus datos de muestra no tienen un arreglo "tabular" apropiado como origen para una TD (p.ej.) - no puedes mezclar diferentes codigos bajo un mismo titulo/encabezado (entre otros) asumo/entiendo que no dispones (o sabrias utilizar) las funciones de matriz dinamica que se podrian usar (?) entonces, la propuesta de solucion va por el lado de las macros (vba), funciona en cualquier version de excel (creo que) por cualquier otra herramienta va a resultar en muchos/demasiados pasos de transformacion (?) - inhabilite tus codigos (con un Exit Sub/Function) - los sustitui por un modulo aparte con procedimientos y una UDF (en vez de la que refieres) - agregue 2 formas con las macros asignadas (filtrar / quitarfiltros) - cada boton lo pulsas (segun la intencion) cuando completes los criterios para filtrar - analiza/estudia la propiedad "CurrentRegion" para entender las "fronteras" que debes mantener en los datos de origen - el estilo de programacion es una "invitacion" a que profundices en su analisis (no lleva comentarios) - el entendido es que hay 6 "grupos" (cod 1, cant 1 >>> cod 6, cant 6) con 2 celdas por grupo prueba y comenta lo que no entiendas concatena x filtro (ayudaExcel).xlsm
    • explico rápido... tengo un formulario de una base donde capturo los datos de salidas de comisión este cuenta con 2 combobox, en el combobox1 de "DAS DE COMISIÓN" selecciono 1 dia ,2 dias ,3 días  o 4 días dependiendo los días de comisión,y en el combobox 2 me debería de cambiar los precios dependiendo la zona, al seleccionar el combobox 1 el dia  se van llenando los textbox de alimentación y hospedaje.. es decir..(1 día solo el textbox de "alimentación" del día 1(se llena solo la alimentación por que es solo un dia, no habria hospedaje ), ....... 2 días de comisión, el textbox de alimentación del primer día,hospedaje del 1er día y alimentación del segundo día ....,3 días, se carga el textbox de  alimentación del 1er día , hospedaje del 1er día ,alimentación y hospedaje del 2o día y solo alimentación del día 3) si es zona 1 llevan un precio(alimentación $458,hospedaje $650) pero si es zona 2 los precios cambian(alimentación $650 y hospedaje $950) el problema es cuando seleccionaba el combobox2 me llenaba varios textbox o me los borraba,solo quiero que el combobox2 solo cambie el precio dependiendo la zona aunque yo ponga 1 o 3 o 2 días de comisión me deje los textboxox de los dias de comision ...espero haberme explicado....de antemano muchas gracias BASE.xlsm
    • Gracias, funciona Con el mismo criterio, , en 32 bits funciona correctamente  deshabilitar  la tecla ESC  asi  Application.OnKey "{ESC}", "" En 64 bits no funciona, directamente es como si no estuviera, tienes idea como deshabilitar la tecla ESC en 64 bits. Disculpas si estoy abusando con las preguntas, es que lo quiero distribuir a amigos y tienen distintas versiones instaladas.
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy