Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
VBA Buscar y reemplazar cambia la fecha al formato de EE. UU.

cuando ejecuto buscar y reemplazar a través de vba, cambia mis fechas a nuestro formato. Así que tengo una columna de fechas, pero todas tienen un prefijo con el texto que quiero eliminar (como Fecha de la factura: dd/mm/aaaa). Cuando uso Ctrl + F y reemplazo manualmente, todo es genial. Elimina el texto, la fecha permanece en su formato original dd/mm/yyyy. Sin embargo, cuando se usa vba para hacer esto, cambia las fechas a mm/dd/yyyy si el día es menor a 12 (es decir, meses en un año). He probado varios métodos diferentes para convertirlo, pero todos parecen tener el mismo problema. Aquí está mi último fracaso...

 Sub DateConvert() Sheets("Sheet1").Select Dim strValue As String Dim RowCount As Integer Dim x As Integer Dim DateValue As Date RowCount = WorksheetFunction.CountA(Range("C1", Range("C1").End(xlDown))) For x = 2 To RowCount 'changes cell value to a string strValue = Cells(x, 3).Value 'removes unwanted text Cells(x, 3).Replace _ What:="Invoice Date:", Replacement:="" 'changes to string to desired date format DateValue = Cells(x, 3).NumberFormat = "dd/mm/yyyy" Next x End Sub

Por favor, que alguien me libre de esta miseria antes de que la computadora portátil o yo salgamos por la ventana. Gracias por adelantado

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Las fechas son extremadamente molestas para trabajar. Su mejor apuesta para asegurarse de que está trabajando con la fecha correcta es usar la función DateSerial y luego formatear la salida como desee:

 Sub DateConvert() Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1") Dim rData As Range: Set rData = ws.Range("C2", ws.Cells(ws.Rows.Count, "C").End(xlUp)) If rData.Row < 2 Then Exit Sub 'No data 'Load range data into an array Dim aData() As Variant If rData.Cells.Count = 1 Then ReDim aData(1 To 1, 1 To 1) aData(1, 1) = rData.Value Else aData = rData.Value End If 'Loop over array and perform conversion Dim aDateValues As Variant Dim i As Long For i = 1 To UBound(aData, 1) aDateValues = Split(Replace(aData(i, 1), "Invoice Date:", vbNullString), "/") 'Remove the extra text and pull the date values aData(i, 1) = DateSerial(aDateValues(2), aDateValues(1), aDateValues(0)) 'Use DateSerial to guarantee correct date Next i 'Output results to sheet with desired date format With rData .Value = aData .NumberFormat = "dd/mm/yyyy" End With End Sub
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda