2011-07-12 21 views
41

Tengo una enorme hoja de cálculo de Excel 2003 en la que estoy trabajando. Hay muchas fórmulas muy grandes con muchas referencias celulares. Aquí hay un ejemplo simple.Deshabilitar la referencia de celda automática de Excel Cambiar después de copiar/pegar

='Sheet'!AC69+'Sheet'!AC52+'Sheet'!AC53)*$D$3+'Sheet'!AC49 

La mayoría de ellos son más complicado que eso, pero esto da una buena idea de lo que estoy trabajando. Pocas de estas referencias de celda son absolutas ($ s). Me gustaría poder copiar estas celdas en una ubicación diferente sin cambiar las referencias de celda. Sé que puedo usar f4 para hacer que las referencias sean absolutas, pero hay una gran cantidad de datos y es posible que necesite usar Fill más tarde. ¿Hay alguna forma de desactivar temporalmente el cambio de referencia de celda en copy-paste/fill sin hacer que las referencias sean absolutas?

EDITAR: Acabo de descubrir que puede hacer esto con VBA copiando el contenido de la celda como texto en lugar de una fórmula. Sin embargo, me gustaría no tener que hacer esto porque quiero copiar filas/columnas enteras a la vez. ¿Hay una solución simple que me falta?

+0

¡Gran pregunta! ¿Puede un bucle en VBA no resolver su problema restante? –

Respuesta

50

De http://spreadsheetpage.com/index.php/tip/making_an_exact_copy_of_a_range_of_formulas_take_2:

  1. Ponga Excel en modo de vista fórmula. La forma más fácil de hacerlo es presionar Ctrl + `(ese carácter es un" apóstrofo hacia atrás "y generalmente está en la misma clave que tiene ~ (tilde).
  2. Seleccione el rango para copiar.
  3. Presione Ctrl + C
  4. de inicio de Windows Bloc de notas
  5. Presione Ctrl + V para más allá de los datos copiados en el Bloc de notas
  6. En Bloc de notas, pulse Ctrl + a seguido de Ctrl + C para copiar el texto
  7. Activar Excel y activar la parte superior a la izquierda de la celda donde desea pegar las fórmulas. Y asegúrese de que la hoja a la que está copiando esté en el modo de vista de fórmulas.
  8. Presione Ctrl + V para pegar.
  9. Presione Ctrl + `para alternar fuera del modo de vista de fórmula.

Nota: Si la operación de pegar de nuevo a Excel no funciona correctamente, es probable que haya utilizado la función Text-to-Columns de Excel recientemente, y Excel intenta ser útil al recordar cómo se analizó por última vez tu información. Debe iniciar el Asistente para convertir texto en columnas. Elija la opción Delimitado y haga clic en Siguiente. Borre todas las marcas de opción de Delimitador excepto Tab.

O, desde http://spreadsheetpage.com/index.php/tip/making_an_exact_copy_of_a_range_of_formulas/:

If you're a VBA programmer, you can simply execute the following code: 
With Sheets("Sheet1") 
.Range("A11:D20").Formula = .Range("A1:D10").Formula 
End With 
+0

Parece que puede pegar en una hoja que no está en el modo de vista de fórmula; no está de más seguir esto al pie de la letra, ya que todo lo demás es estrictamente necesario. +1 ya que esto fue muy útil y fácil de seguir. No entiendo por qué Excel asume que queremos hacer referencia a una celda en otro archivo, pero al menos hay una buena solución. – ZeroK

+3

Esta respuesta es maravillosa, desearía poder aceptarla para el póster original. Soy programador, así que VBA no me asusta, pero no voy a usarlo solo para copiar y pegar algunas celdas si puedo evitarlo ... Realmente debería haber una opción de opción "Pegar sin actualizar la fórmula" en Excel – JPhi1618

+1

Gracias, gracias, gracias. :) – Tamer

0

Creo que está atascado con la solución que mencionó en su edición.

Me gustaría empezar por la conversión de todas las fórmulas en la hoja de texto más o menos así:

Dim r As Range 

For Each r In Worksheets("Sheet1").UsedRange 
    If (Left$(r.Formula, 1) = "=") Then 
     r.Formula = "'ZZZ" & r.Formula 
    End If 
Next r 

donde el 'ZZZ utiliza el ' para significar un valor de texto y el ZZZ como un valor que podemos tener en cuenta al queremos convertir el texto nuevamente en una fórmula. Obviamente, si ninguna de sus células realmente empezar con el texto ZZZ continuación, cambie el valor ZZZ en la macro VBA a otra cosa

Cuando la re-organización es completa, me permitiría convertir el texto de nuevo a una fórmula como esta:

For Each r In Worksheets("Sheet1").UsedRange 
    If (Left$(r.Formula, 3) = "ZZZ") Then 
     r.Formula = Mid$(r.Formula, 4) 
    End If 
Next r 

Una desventaja real de este método es que no puede ver los resultados de ninguna fórmula mientras está reorganizando. Puede encontrar que cuando convierte desde texto a fórmula que tiene una serie de errores #REF, por ejemplo.

También podría ser beneficioso para trabajar en esto en etapas y convertir de nuevo a las fórmulas de vez en cuando para comprobar que no se han producido catástrofes

22

Una solución muy sencilla es seleccionar el rango que desea copiar, a continuación, Buscar y reemplazar (Ctrl + h), cambiando = a otra señal que no se utiliza en la fórmula (por ejemplo, #), lo que impide que sea una fórmula activa.

Luego, copie y pegue el rango seleccionado en su nueva ubicación.

Finalmente, Buscar y reemplazar para cambiar # de nuevo a = tanto en el rango original como en el nuevo, restaurando así ambos rangos para que vuelvan a ser fórmulas.

+3

Hasta ahora, lamentablemente, esta es la solución con la que estoy más contento. Hubiera sido conveniente con un atajo alternativo que simplemente hiciera esto. Descripción –

5

Vine a este sitio buscando una manera fácil de copiar sin cambiar las referencias de celda. Pero ahora creo que mi propia solución es más simple que la mayoría de estos métodos. Mi método se basa en el hecho de que Copiar cambia las referencias, pero Mover no lo hace. Aquí hay un ejemplo simple.

Suponga que tiene datos brutos en las columnas A y B, y una fórmula en C (por ej. C = A + B) y quiere la misma fórmula en la columna F pero Copiar de C a F conduce a F = D + E .

  1. Copie el contenido de C a cualquier columna temporal vacía, digamos R. Las referencias relativas cambiarán a R = P + Q pero ignorarán esto incluso si está marcado como un error.
  2. Regrese a C y muévala (no la copie) a F. La fórmula no se debe modificar, por lo que F = A + B.
  3. Ahora vaya a R y lo copie en C. Referencia relativa revertirá a C = A + B
  4. Eliminar la fórmula temporal en R.
  5. de Bob su tío.

He hecho esto con un rango de celdas así que me imagino que funcionaría con prácticamente cualquier nivel de complejidad. Solo necesita un área vacía para estacionar las celdas protegidas. Y, por supuesto, debes recordar dónde los dejaste.

+0

no es simple :) Si desea copiar la fila 1 (que hace referencia a la fila 2) hasta la fila 11, entonces: 1. copiarlo en la fila 11, entonces se hará referencia a la fila 12. 2. Corte y péguelo en la fila 21, luego seguirá haciendo referencia a la fila 12. 3. Cópielo de 21 a 11, luego hará referencia a la fila 2, según sea necesario. – alexkovelsky

+0

Me parece simple, copiar a un desplazamiento, mover el original, copiar el desplazamiento hacia atrás, eliminar el desplazamiento. – will

+0

simple y funciona, +1 – davidhigh

0

no se hacen chequeos en Excel, pero esto funciona en Libreoffice4:

Todo el asunto de la reescritura de direcciones viene durante consecutiva
(a1) cortar
(a2) pegar

Es necesario para interrumpir la secuencia al poner algo intermedio:
(b1) cortar
(b2) seleccionar algunas celdas vacías (más de 1) y arrastrarlas (mover)
(b3) paste

El paso (b2) es donde la celda que está a punto de actualizarse detiene el rastreo. Rápido y simple.

+0

Creo que esta respuesta no es apropiada ya que ni siquiera ha sido probada. – Fjodr

+0

Fjodr, no tengo excel. ¿Podrías por favor probarlo? Espero que funcione y esto suena como la solución más fácil de todas. ¡La respuesta más votada consiste en 9 pasos! El mío es mucho más fácil. ¡Por favor pruebalo! – user1501439

0

Pruebe esto: Haga clic izquierdo en la pestaña, haciendo una copia de la hoja completa, luego corte las celdas que desea mantener igual y péguelas en su hoja de trabajo original.

1

Este truco simple funciona: Copia y pega. NO corte y pegue. Después de pegar, vuelva a seleccionar la pieza que copió y vaya a EDITAR, deslice hacia abajo para BORRAR y BORRE CONTENIDOS.

-1

he encontrado otra solución que es muy sencillo: 1. Corte el contenido 2. pegarlos en la nueva ubicación 3. Copia el contenido que acaba de pegar en la nueva ubicación que desee. 4. Deshaga la operación de cortar y pegar, colocando los contenidos originales donde los obtuvo. 5. Pegue los contenidos del portapapeles en la misma ubicación. Estos contenidos tendrán las referencias originales.

Parece mucho, pero es súper rápido con atajos de teclado: 1. Ctrl-x, 2. Ctrl-V, 3. Ctrl + C, Ctrl-z 4., 5. Ctrl-V

0

Es común usar find/replace para deshabilitar fórmulas mientras se realizan manipulaciones. Por ejemplo, copia con transposición. La fórmula está desactivada al colocar un marcador de posición (por ejemplo, "$ =") delante de él. Buscar reemplazar puede deshacerse de estos una vez que la manipulación se haya completado.

Este vba simplemente automatiza la búsqueda/reemplazo de la hoja activa.

' toggle forumlas on active sheet as active/ inactive 
' by use of "$=" prefix 

Sub toggle_active_formulas() 
    Dim current_calc_method As String 
    initial_calc_method = Application.Calculation 
    Application.Calculation = xlCalculationManual 
    Dim predominant As Integer 
    Dim c As Range 
    For Each c In ActiveSheet.UsedRange.Cells 
     If c.HasFormula Then 
      predominant = predominant + 1 
     ElseIf "$=" = Left(c.Value, 2) Then 
      predominant = predominant - 1 
     End If 
    Next c 
    If predominant > 0 Then 
     For Each c In ActiveSheet.UsedRange.Cells 
      On Error Resume Next 
      If c.HasFormula Then 
       c.Value = "$" & c.Formula 
      End If 
     Next c 
    Else 
     For Each c In ActiveSheet.UsedRange.Cells 
      On Error Resume Next 
      If "$=" = Left(c.Value, 2) Then 
       c.Formula = Right(c.Value, Len(c.Value) - 1) 
      End If 
     Next c 
    End If 
    Application.Calculation = initial_calc_method 
End Sub 
+0

¿Puede agregar más detalles a esta publicación, por favor? – cdomination

-1

Haga clic en la celda que desea copiar. En la barra de fórmulas, resalta la fórmula.

Presione Ctrl C.

Presione escape (para eliminar la edición activa de esa fórmula).

Elija una nueva celda. Ctrl V.

Cuestiones relacionadas