2009-03-23 28 views
9

¿Hay una manera simple de hacerlo, mediante macro o de otro modo? Por campo calculado me refiero a un campo que se calcula a partir de otros campos, frente a los valores ingresados ​​sin procesar. Al resaltar me refiero al color diferente. Necesito esto para comprender mejor una gran hoja de cálculo de un cliente.¿Cómo resaltar los campos calculados en una hoja de cálculo de Excel?

+0

Hubo un hilo anterior sobre este tema: http://stackoverflow.com/questions/61432/tool-for-deciphering-spreadsheets/61448 – Fionnuala

Respuesta

10

Para hacerlo manualmente, presione la tecla F5 para abrir el cuadro de diálogo Ir a. Haga clic en el botón Células especiales. En la siguiente pantalla, seleccione Fórmulas (es una opción a la derecha).

Excel seleccionará todas las celdas que coincidan. Ahora solo se trata de aplicar formato.

+0

esto funciona y es simple ... la solución basada en macro sugerida por otra persona simplemente no lo hizo trabajo – DSO

+0

Y solo recibo UN punto, mientras que la solución no funciona se vuelve más? –

0

Puede utilizar la propiedad Interior.ColorIndex para cambiar el color de fondo de la celda activa:

ActiveCell.Interior.ColorIndex = 36 

También puede aplicar a un rango:

Range("A1:A5").Interior.Color = RGB(200,160,35) 

Esto se aplica a Excel 2003, me no he usado la última versión, pero dudo que esto haya cambiado.

Por lo general, puede grabar una macro y luego ver el código generado para ver cómo se hace algo.

1

solución simple: Ctrl - `(la tecla justo por encima de la lengüeta)

+2

esto sólo cambiar la vista para mostrar fórmulas. La pregunta solicitada para cambiar el color de fondo de estos campos. – AgentConundrum

+0

Fantástico, muestra las fórmulas en línea. La mejor solución para el problema de raíz: 'Necesito esto para comprender mejor una hoja de cálculo grande de un cliente' –

4

Voy a suponer que sólo está hablando de las fórmulas de celda en lugar de cálculos VBA aquí, ya que es posible establecer el color de la celda en su procedimiento de VBA si lo está haciendo de esa manera.

La forma de hacerlo es verificando la celda de una fórmula después de que haya terminado con ella, y cambie su color en ese punto. El evento relevante aquí es el cambio, y la propiedad HasFormula de la célula le dirá si la célula es un valor literal, o se calcula a partir de una fórmula:

 
Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.HasFormula Then 
     Target.Interior.Color = vbRed 
    Else 
     ' remove background colour entirely (i.e. No Fill) 
     Target.Interior.ColorIndex = xlColorIndexNone 
    End If 
End Sub 
2

El siguiente código debe desplazarse a través de cada hoja, destacando cada células que comienza con un '=' y colores el color deseado (actualmente color 36 que es amarillo claro).

Sub HighLightFormulas() 
Dim objSheet As Worksheet 
Dim strOriginalSheet As String 
Dim intMaxBlankCells As Integer 
Dim intBlankColumns As Integer 
Dim intBlankRows As Integer 
Dim intCurrentColumn As Integer 
Dim intCurrentRow As Long 

intMaxBlankCells = 40 
strOriginalSheet = ActiveSheet.Name 

For Each objSheet In Worksheets 
    intBlankRows = 0 
    intCurrentRow = 1 
    intCurrentColumn = 1 

    Do While intCurrentRow <= 65536 And intBlankRows <= intMaxBlankCells 
     intBlankColumns = 0 
     intCurrentColumn = 1 

     Do While intCurrentColumn <= 256 And intBlankColumns <= intMaxBlankCells 
      If Left(objSheet.Cells(intCurrentRow, intCurrentColumn).Formula, 1) = '=' Then 
      objSheet.Cells(intCurrentRow, intCurrentColumn).Interior.ColorIndex = 36 
      End If 
      intCurrentColumn = intCurrentColumn + 1 
     Loop 

     If intCurrentColumn = intBlankColumns Then 
      intBlankRows = intBlankRows + 1 
     Else 
      intBlankRows = 0 
     End If 
     intCurrentRow = intCurrentRow + 1 
    Loop 
Next objSheet 
Worksheets(strOriginalSheet).Activate 

Call MsgBox("The Highlighting process has completed", vbOKOnly, "Process Complete") 

End Sub

También se detendrá después de 40 celdas en blanco consecutivos (para evitar el procesamiento de todo de una hoja en su mayoría en blanco).

Espero que esto ayude.

+0

Excel VBA proporciona una propiedad para las fórmulas, HasFormula, que podría usar en lugar de buscar el carácter =. De lo contrario, esto parece bueno para establecer el color en campos preexistentes. Mi respuesta solo cubre las que cambias después de que el código esté en su lugar. – AgentConundrum

+1

lo siento votó demasiado rápido ... esto suena como lo que necesito, pero había un error de compilación, y cuando lo arreglé y lo ejecuté, bloqueó Excel.realmente no tuve tiempo para rebuscar, así que me di por vencido, pero alguien acaba de dar una solución no programática que simplemente funcionó – DSO

3

Excel ha construido en la característica de "Rastrear dependientes" (que muestra las flechas para mostrar las celdas calculadas)

Seleccione el rango que contiene los datos.
Excel 2007 -> Fórmulas -> Depende del seguimiento

0

Me gustó el código de Craig aquí, porque mantiene el diseño de la hoja de cálculo existente y aún muestra lo que se calcula y lo que no es "de un vistazo", pero lo he modificado un poco para que funcione mejor. fuera del área activa de las hojas, y agregué una subrutina 'UnhighlightFormulas' para que pueda deshacer fácilmente el formateo (por ejemplo, antes de imprimir). Se ha probado en Excel 2007. Tenga en cuenta que perderá cualquier otro color de fondo de celda al ejecutar esto.

Option Explicit 
Public Sub HighlightFormulas() 
ColorFormulas (36) '36 is yellow 
End Sub 

Public Sub UnhighlightFormulas() 
ColorFormulas (-4142) '-4142 is default 
End Sub 

Private Sub ColorFormulas(intColor As Integer) 
Dim wshSheet As Worksheet 
Dim rngRange As Range 
Dim rngCell As Range 
For Each wshSheet In Worksheets 
    Set rngRange = RangeInUse(wshSheet) 
    If Not rngRange Is Nothing Then 
    For Each rngCell In rngRange 
     If Left(rngCell.Formula, 1) = "=" Then 
     If rngCell.Interior.ColorIndex <> intColor Then rngCell.Interior.ColorIndex = intColor 
     Else 
     If rngCell.Interior.ColorIndex <> -4142 Then rngCell.Interior.ColorIndex = -4142 '-4142 is default 
     End If 
    Next 
    End If 
Next 
End Sub 

Private Function RangeInUse(ws As Worksheet) As Range 
    Dim LastRow&, LastCol% 
' adapted from http://www.beyondtechnology.com/geeks012.shtml 
' Error-handling in case there is no data in worksheet 
    On Error Resume Next 
    With ws 
    LastRow& = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row 
    LastCol% = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column 
    End With 
    Set RangeInUse = ws.Range("A1", Cells(LastRow&, LastCol%)) 
End Function 
2

TLDR;

Utilice el formato condicional con una fórmula para resaltar todas las celdas que contienen una fórmula.

detalles

En MS Office 365 Versión: 5.0.4667.1002, las siguientes obras

  1. Seleccione un rango de celdas.
    • Case1: Uso Ctrl + Apara seleccionar todas las celdas.
    • Case2: Seleccione un rango específico de .
  2. Vaya a la pestaña Inicio, sección Estilos, y elija Formato condicional> Nueva regla.
  3. Se abrirá el cuadro de diálogo "Nueva regla de formato".
  4. elegir la opción "Usar una fórmula para determinar qué células para dar formato"
  5. En el cuadro de texto, añadir la siguiente regla: =IsFormula(A1)
    • Case1: Si ha seleccionado todas las celdas, utilice A1 porque es la primera celda.
    • Case2: Si seleccionó un rango específico, reemplace A1 con la primera celda de su rango.
  6. Haga clic en Formato ...
  7. El cuadro de diálogo "Formato de celdas" se abrirá.
  8. Elija el formato que desea aplicar. P.ej. un fondo amarillo.
  9. Haga clic en Aceptar.
  10. Todas las celdas que tienen fórmulas ahora tendrán, por ejemplo, un fondo amarillo.

pantalla

You've created a new formatting rule!

+0

Funcionó perfectamente y era exactamente lo que estaba buscando. – emragins

Cuestiones relacionadas