0 votos

Consolidar fórmulas de Excel en valores

Mi cliente tiene problemas con las hojas que contienen fórmulas, así que estoy convirtiendo todos los valores calculados en datos codificados. Al parecer, no hay ninguna función nativa para hacer este trabajo. Según el soporte de Microsoft, el "solución" (oh Dios mío) es seleccionar las celdas que quieres, copiar, seleccionar la primera celda, ejecutar "pegar especial", hacer clic en los valores solamente:

https://support.microsoft.com/en-us/office/replace-a-formula-with-its-result-38001951-c0e8-4fbd-9048-37ef81e2891e

Ahora, esto suena como un mal remiendo, un parche, no una función adecuada. Me gustaría saber si es posible conseguir el mismo resultado con una acción rápida de AppleScrip (incluso usando UI) o quizás macros. Me manejo mejor con Automator así que prefiero no sumergirme en el mundo VBA, pero puedo cambiar de opinión si es más fácil.

Lo que necesito es: seleccione las celdas, pulse un atajo, sustituya la fórmula por su resultado calculado.

1 votos

Parece bastante razonable cuando se tiene la opción de pegar fórmulas o valores especiales o formatos, etc., como se desee - estoy contento con esa flexibilidad...

1 votos

Desde el teclado su + C (para copiar) y luego + V (para abrir la ventana especial de pegado) + V (para seleccionar el Valor) + . Así que son 7 pulsaciones de teclas. Si desea reemplazar sólo en una celda, entonces F2 (ir al modo de edición de celdas) y luego F9 (reemplazar la fórmula con el valor).

0 votos

@SolarMike su no flexibilidad cuando no tienes una función adecuada para hacer el trabajo. "Consolidar datos" es flexibilidad.

1voto

Mockman Puntos 16

He aquí un método más sencillo y rápido para sustituir fórmulas por valores utilizando el comando especial de pegar. Está configurado para trabajar con el rango utilizado, pero el enfoque se puede reducir fácilmente (ver comentarios).

tell application "Microsoft Excel"

    set ur to used range of active sheet -- copy from where
    -- to reduce affected area…
    -- set ur to intersect range1 ur range2 column "A:B"

    copy range ur -- to clipboard

    activate object range "A1" of active sheet -- paste where
    paste special range "A1" what paste values

end tell

Dejo aquí mi respuesta original, ya que es válida y puede ser útil en otras circunstancias, como por ejemplo si se desea procesar más cada celda.

Esto tomará el valor de cada celda del rango usado de una hoja, y luego recorrerá cada celda de ese rango y reemplazará su contenido con su valor. He añadido una línea opcional para limitar el rango afectado.

tell aplicación "Microsoft Excel" tell libro 1 tell hoja activa

        set ur to used range -- where      
        set ur to intersect range1 ur range2 column "A:B" -- limit where

        set cv to value of cells of ur -- what          
        repeat with x from 1 to count of cells of ur
            set value of cell x of ur to item x of cv
        end repeat

    end tell
end tell

fin del relato

Por último, aquí hay una solución con el ratón que encontré en macexcel.com en Cambiar fórmulas por valores en el modo manual 2.

Seleccione el rango que desea afectar y pase el cursor por el borde derecho o inferior del rango seleccionado. El cursor cambiará a una mano. Haga clic con el botón derecho y comience a arrastrar la selección, entonces el cursor cambiará a un puño. Asegúrese de que no ha movido la selección y suelte el botón. Aparecerá un menú contextual alternativo. Haga clic en Copy Here as Values Only y los valores de la selección se pegarán sobre su contenido actual. Y por supuesto, puede crear un atajo de teclado para Pegar Valores que permite una solución rápida y sencilla.

0 votos

Interesante. Es elegante y funciona. Sin embargo, tardó mucho tiempo en procesar sólo unas pocas líneas. El método de copiar y pegar es casi instantáneo. Este podría ser uno de los pocos casos en los que el uso de algunos atajos de interfaz de usuario puede ser más eficaz.

0 votos

A grandes rasgos, ¿cuántas filas/columnas hay en el rango utilizado? Además, en tu pregunta, mencionas la selección de celdas si hicieras eso, ¿aproximadamente cuántas serían?

0 votos

Gracias por las molestias, escribí un simple script que hizo el truco. Espero que tu solución ayude a otras personas. Si todavía quieres probar tu código tengo un archivo de ejemplo aquí con todas las fórmulas agarrando los datos de la segunda hoja: bit.ly/3kzAi6l

0voto

HUSTEN Puntos 118

Era más sencillo de lo que pensaba. Un simple GUI script resolvió el problema. Sin embargo, sigo pensando que Microsoft debería implementar una función de "consolidar todas las fórmulas". He escrito algunos comentarios para ellos. De todos modos, aquí está mi solución simple, de un atajo:

on run {}
   tell application "Microsoft Excel" to activate
   tell application "System Events"
      key code 0 using command down --select all
      delay 0.5
      key code 8 using command down --copy
      delay 0.5
      key code 9 using {control down, command down} --paste special
      delay 0.5
      key code 9 --V (select values only)
      delay 0.5
      key code 36 --return
   end tell
end run

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X