Saltar al contenido

Contenido de celda


Betomil

Recommended Posts

publicado

Estimados,

Trabajo con base de datos de productos químicos que se identifican con un algoritmo con estas características:  0000000-00-0 

El problema que tengo es que cusndo escribo un número como el siguiente:

2212-05-7

aunque la celda tenga formato de texto, automaticamente me lo convierte en fecha

07-05-2012

En una vase de datos con 200.000 compuestos, puede haber unas 2000 sustancias que presentan este problema

Cómo puedo hacer para evitarlo?

 

Gracias

Betomil

publicado

Si el registro de los datos es manual como indica, entonces antes de escribir el numero 2212-05-7 le recomiendo poner el apostrofe (coma alta (')) con eso debería ser suficiente.

'2212-05-7

publicado

Hola a ambos,

@Betomil, si previamente asignas a las celdas afectadas formato Texto, podrás introducirlo sin problemas como tal.

Saludos,

 

publicado

Hola Israel,

Gracias por tu consejo.

Sabés cual es el problema que yo descargo una base de datos con por ejemplo, 100.000 filas . Los formatos pueden ser .html; .pdf; .xlsx. En ese archivo puede haber 1000 filas con formato similar al que introduje en mi correo anterior.

Copio los datos para incluirlos en un archivo excel.

Cuando pego los datos en la tabla excel, todos esos números se convierten en fecha, aunque previamentwe haya formateado la columna como texto.

Saludos,

 

Beto 1000

publicado

Hola Israel,

Sí, copio todo como viene del portapapeles.  Creo que se fue siempre mi error. No es así?? Debería entónces haberlos pegado previamente indicando, pegar como calores??

Gracias,

Beto 1000

publicado
hace 26 minutos , Betomil dijo:

Debería entónces haberlos pegado previamente indicando, pegar como calores??

Es lo recomendable si quieres mantener el formato de texto del destino, ¿ya hiciste la prueba, te sirvió?

publicado

Hola Israel,

Hice la prueba, el número conserva el formato, no se transforma en fecha. Pero hay un problema, que cuando querés ordenar los datos, estos valores no son reconocidos  como el resto y los ordena separadamente.

Te adjunto un archivo como ejemplo.

El archivo tiene 226.687 filas, pero adjunté solo algunas como ejemplo

En la coluna B los datos estan copiados como valores. Si en la columa VB buscas el número que puse como ejemplo "1902-01-8",  bo está transformado en fecha. Pero en la columna C puse los mismos datos y los ordené. Fijate que en las primeras  600 filas estan los números que no fueron convertidos a fecha, pero no son reconocidos como el resto de los valores. Como ejemplo, el valor  1902-01-8 mantiene el formato pero si hacés cdoble click en él, lo convierte a fecha (Ver columna D). En cambio el valor 1156-50-9 es ordenado separadamente y no se convierte a formato de fecha aunque hagas doble click en él

Si tenés la solución, te agradezco.

Saludos,

 

Beto 1000

Ejemplo2.xlsx

publicado

Lo lamento pero no termine de comprender, lo sí es que al dar doble clic no lo convierte por sí solo, deberías dar Enter después. Si le das Esc. después del doble cilc por ejemplo, lo debería dejar como está originalmente.

hace 15 minutos , Betomil dijo:

Hice la prueba, el número conserva el formato, no se transforma en fecha.

De la consulta original me parece que se cubre la expectativa con la sugerencia del Maestro @Victor7 y el pegado en valores.

En 10/4/2024 at 13:47 , Betomil dijo:

aunque la celda tenga formato de texto, automaticamente me lo convierte en fecha

En una vase de datos con 200.000 compuestos, puede haber unas 2000 sustancias que presentan este problema

Cómo puedo hacer para evitarlo?

Del ordenado y en mi caso no me gusta mezclar temas, le podría recomendar si me lo permite crear en un tema nuevo donde se enfoque en esa necesidad porque en una primera instancia, una vez pegado los datos y verlos como texto debería ordenarlos bajo ese esquema. Si va a editar los datos después de pegar podría entonces concatenar cualquier carácter que evitaría la confusión con la fecha y el ordenado.

Lo leo cualquier comentario.

 

publicado

Hola, Israel,

 

Sí, mi problema no es que el número no se conviert en fecha, sino que no es reconocido como los demas valores de la tabla al momento de ordenarlos.

Saludos,

 

Beto 1000

publicado

Hola de nuevo a ambos,

No estoy seguro de haberlo entendido, pero si el problema lo tienes en la ordenación de los datos, con esta fórmula:

=ORDENARPOR(C2:C3000;--TEXTOANTES(C2:C3000;"-"))

conseguirías ese objetivo (con la columna C) Cambiando C2:C3000 por B2:B3000 (u otro rango), te las ordenaría de la misma forma. En cualquier caso, revísalo: yo no me he mirado los 3.000 registros del archivo.

Saludos,

publicado

Hola Victor,

Gracias por la respuesta.

El problema lo tengo con la ordenación de datos. Mis conocimientos de Excel son mímimos. Uso este programa para una base de datos.  Se eljegir el tipo de fuente; dar formato a loas celdas;  alinear el texto y un poco mas. Hace poco aprendí a importar datos de archivos .csv. Perno no se mucho mas de Excel. Por ello desconozco crear fórmulas para por ejemplo, ordenar datos.  Poero voy a usar la que me envias en tu ,emsaje.

 

Saludos,

 

Beto 1000

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿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
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.