Saltar al contenido

Colocar una formula en un rango y que se obtenga los valores mas no la formula


Recommended Posts

publicado

Saludos,

Estoy preparando un archivo el cual se encarga de recopila (acumular) información dìa a día de un determinado archivo y va a uno general, una vez ya copiado aplico formulas las procesa, las selecciono y las convierto en valores, el còdigo de una parte (que es casi todo) es el siguiente:



'RegistrosActuales (es desde donde se quedo el anterior ingreso y lo nuevo continúa)
' Entonces tenemos esto

'Agrega fecha de actualización
Range("g" & RegistrosActuales & ":g" & (Cells(1048576, 1).End(xlUp).Row)).Formula = Now()
Range("g" & RegistrosActuales & ":g" & (Cells(1048576, 1).End(xlUp).Row)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

[/CODE]

Mi objetivo es que si existe alguna manera de que al poner una determinada fórmula en un rango no coloque la formula en sì, si no el resultado mismo los valores, creo que con esto se puede ahorrar tiempo si estamos hablando de un aproximado de 40 a 50 mil registros por dìa y se aplica fórmulas a un total de 17 columnas incluyendo burscarv y operaciones en si.xxx.conjunto

A la espera de su pronta respuesta.

Desde ya muchas gracias por su tiempo

JaimeDavid

publicado

Hola!!

Mmm, puedes ocupar WorkSheetFunction, puedes dar valor a una variable o celda en base a la función que elijas, te anexo un ejemplo:


miVariable = Application.WorksheetFunction.Sum(Range("A1:A3"))
[/CODE]

Con este ejemplo en la variable te asigna el valor de la suma de las celdas

Saludos!

publicado

Buenas, JaimeDavid

Prueba con esto.........pero ojo........pierdes la información de la procedencia del valor.......y funciona para toda la hoja donde incluyas el código....(no en un módulo)


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Cells) Is Nothing Then
x = ActiveCell.Value
ActiveCell = x
End If
End Sub
[/CODE]

Prueba en algún archivo vacío el funcionamiento.....porque no vas a ver ni una fórmula........jejejejej

Un saludo,

Tese

Invitado Cacho R
publicado

Me parece, Jaime, que deberías explicarte muchísimo mejor... incluyendo (tal como lo mencionan las Normas de este Foro) un archivo de muestra.

En efecto, la línea:

Range("g" & RegistrosActuales & ":g" & (Cells(1048576, 1).End(xlUp).Row)).Formula = Now()

no introduce en las celdas una fórmula sino -directamente- la fecha y la hora actuales. Por ello todo lo que viene después de la citada línea es innecesario.

O sea: te diría que muestres un archivo -no con 50 mil filas sino- con no más de 10, para ver las fórmulas involucradas.

Una técnica posible es mantener -a modo de referencia- la primera fila de datos con sus fórmulas.

Cuando ejecutas la macro, dicho procedimiento copiaría las fórmulas en cuestión a todo el rango involucrado, tornaría valores dichos cálculos (excepto la primera fila) y luego se procedería a la copia de los datos al otro archivo.

En fin: ¡Comienza explicando mejor y mostrando más!, ¿Sí?...

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

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para generar un código alfanumérico continuo que al guardar los datos se copia en la Celdas “B5” de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Private Sub CommandButton3_Click()     If Hoja58.Range("B5").Value < 9999 Then Hoja58.Range("B5").Value Hoja58.Range("B6").Value + 1     Else        Hoja58.Range("B5").Value = 1     End If If Hoja59.Range("B5").Value < 9999 Then Hoja59.Range("B5").Value = Hoja59.Range("B6").Value + 1 Else        Hoja59.Range("B5").Value = 1     End If End Sub El código se genera normalmente sin embargo no se copia inmediatamente en las Celdas “B5” sino que aparece en las Celdas “B6” mientras que las Celdas “B5” siempre permanecen en blanco, actualmente el código consta de tres letras y cuatro dígitos (RCI-0000) pero me interesa poderle concatenar el mes y año en formato mm-yy para que el código finalmente quede expresado de la siguiente forma RCI-0000-00-00 Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad cuando introduzco texto en los TextBox 5, 6 y 7 y dicho texto es mas largo que el ancho de los Texbox el texto se copia en una misma línea lo que dificulta verificar la redacción, así como visualizar cualquier error por lo cual necesito me ayuden con una macro que justifique el texto dentro de los Textbox, he probado usar la función Multiline sin obtener el resultado esperado. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo los datos provenientes de los TextBox 5, 6 y 7 se guardan en las Columnas H, I y O de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) sin embargo cuando el texto es abundante no se visualiza completamente en las celdas correspondientes de allí que necesito que cada fila se ajuste al tamaño de la celda que contenga mayor cantidad de texto para lo cual he probado con la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireRow.AutoFit End Sub Sin embargo, dicha macro coloca todas las filas del tamaño del texto que contengan y lo que en realidad necesito es que dicha macro solo se aplique desde la Fila 5 en adelante. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para que la fecha aparezca en el Textbox2: Private Sub UserForm_activate() Me.TextBox2.Value = VBA.Date End Sub Sin embargo, una vez guardo los datos la fecha cambia de formato y se guarda en formato mm/dd/yyyy en vez de dd/mm/yyyy y este cambio de fecha me distorsiona los resultados de las fórmulas en las Columnas J en las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • ¡Hola! Después de un buen tiempo ausente...  @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos.   Extraer piezas - gramos 365_GP.xlsx
  • 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.