Warunkowo sformatuj komórkę, jeśli zawiera formułę

18

Czy jest możliwe warunkowe sformatowanie komórki, jeśli komórka zawiera formułę (aby ostrzec siebie i innych użytkowników podczas aktualizacji komórki)?

wilson
źródło
Jeśli chcesz szybko zobaczyć, które komórki zawierają formuły, możesz wpisać Ctrl-`(to back-tick, na tym samym klawiszu co ~ na angielskich klawiaturach), aby wyświetlić formuły. Naciśnij ponownie przycisk, aby przełączyć.
yoyo

Odpowiedzi:

9

Aby to zrobić, możesz użyć formatowania warunkowego, używając XLM i nazw zakresów

Mam dłuższy artykuł na temat używania XLM z nazwami zakresów i formatowaniem warunkowym do automatycznego formatowania arkuszy kalkulacyjnych zgodnie z zawartością komórki

  1. Zdefiniuj nazwę zakresu IsFormula = GET.CELL (48, INDIRECT („rc”, FALSE))
  2. Zastosuj test warunkowego formatowania komórek dla formuły, tj. = IsFormula z wypełnieniem kolorem
brettdj
źródło
Przepraszamy, do tej pory nie testowałem twojej odpowiedzi. Ta sztuczka jest prosta i piękna. Przyjęty! Dzięki. (Nawiasem mówiąc, link jest zerwany.)
Wilson
Przetestowane i działa! Musiałem znaleźć poprawną definicję włoskiej wersji programu Excel 2007. Jeśli masz włoski program Excel, musisz użyć = INFO.CELLA (48; INDIRETTO („rc”; FALSO)) (pamiętaj, że zamiast przecinków należy również wstawić średnik)
Kar.ma
Złą stroną jest to, że musisz zapisać go jako plik makra (np. Xlsm), a po otwarciu pliku kolorystyka nie jest wyświetlana, dopóki nie włączysz makr.
Kar.ma
Kiedyś można było używać xlmbez ostrzeżeń makro, MSFT zmieniło podejście bezpieczeństwa.
brettdj,
10

Opierając się na odpowiedzi brettdj, ponieważ powiązanie z tym artykułem było dość trudne do naśladowania:

  1. Utwórz nową regułę formatowania warunkowego i wybierz opcję Użyj formuły, aby określić, które komórki należy sformatować
  2. Wstaw następującą formułę: =ISFORMULA(INDIRECT("rc",FALSE))
  3. Jeśli chcesz, aby reguła miała zastosowanie do całego arkusza, $1:$1048576jako zakres do zastosowania. W przeciwnym razie możesz wprowadzić dowolny zakres.

Formuła INDIRECT("rc",FALSE)zwraca odwołanie do bieżącej komórki. Jeśli kiedykolwiek użyję tego w arkuszu, tworzę Zdefiniowaną Nazwę o nazwie coś podobnego ThisCelli używam tego w formule, na wypadek, gdybym wrócił po latach i pomyślał „po co to do diabła?”.

toryan
źródło
To jest poprawna odpowiedź dla programu Excel 2013 i nowszych, patrz support.office.com/en-us/article/…
anishpatel
1
Zamiast używać INDIRECT("rc",FALSE), użyj odwołania względnego z lewą górną komórką w zakresie formatowania warunkowego „Dotyczy”. Na przykład, jeśli masz zakres „Dotyczy” =$A$3:$F$300, użyj =ISFORMULA(A3). Działa to, ponieważ formatowanie warunkowe obsługuje odwołania względne, zobacz to
Micah Lindström
4

Możesz wypróbować te:

VBA

Utwórz niestandardową funkcję z następującym kodem:

Function IsFormula(ByVal Ref As Range) As Variant
    If Ref.Cells.Count > 1 Then
        IsFormula = CVErr(xlErrNA)
    Else
        IsFormula = Ref.HasFormula
    End If
End Function

Przykład:

Aby sprawdzić, czy jakieś komórki w kolumnie A mają jakieś formuły:

  1. Podświetl kolumnę A
  2. Przejdź do Formatowanie warunkowe > Nowa reguła > Użyj formuły, aby określić, które komórki sformatować
  3. Użyj ff. formuła:=IsFormula(A1)

Bez VBA

  1. Naciśnij F5lub Ctrl+G
  2. Kliknij Specjalne .
  3. Wybierz Formuły i kliknij OK . Podświetla to wszystkie komórki w arkuszu zawierającym formuły.
  4. Ustaw format, którego chcesz używać.
    Lub
    Przejdź do Style komórek (na karcie Narzędzia główne) i wybierz styl, który chcesz skojarzyć z komórkami zawierającymi formułę. Aby zmienić wygląd, kliknij prawym przyciskiem myszy wybrany styl i kliknij polecenie Modyfikuj . Wszystkie komórki o tym stylu zostaną automatycznie zaktualizowane.
Ellesa
źródło
chociaż osobiście nie wolę używać VBA, rozwiązanie VBA jest w tym przypadku lepsze, ponieważ formatowanie komórki można zmieniać dynamicznie, gdy formuła jest wprowadzana do komórki (lub odwrotnie). dzięki.
wilson
4

Jest to bardzo prosty sposób, przetestowany w programie Excel 2016.

Podkreśl zakres, do którego chcesz to zastosować, powiedzmy od A3:W20. Przejdź do formatowania warunkowego i wybierz NEW RULE | USE A FORMULA TO DETERMINE WHICH CELLS TO FORMAT.

Wprowadź =isformula(A3)i wybierz format, który chcesz zastosować.

A3jest oczywiście odniesieniem do pierwszej komórki w twoim zakresie, ale to formatowanie stosuje się do wszystkich. W rezultacie w twoim zakresie każda komórka będąca formułą jest warunkowo sformatowana.

Joe Dog
źródło
1

Nowsze witryny pomocy zalecają funkcję zdefiniowaną przez użytkownika:

Function IsFormula(cell) as boolean 
  IsFormula = cell.HasFormula
End Function

Następnie użyj tej funkcji jako warunku

W rzeczywistości program Excel 2013 i nowsze wersje mają IsFormulajako funkcję standardową.

Carl Witthoft
źródło
-1

Możesz także użyć formatowania warunkowego:

  1. Wybierz zakres komórek, do których chcesz zastosować formatowanie warunkowe
  2. W Home -> Formatowanie warunkowe -> Nowa reguła: Użyj formuły, aby wykryć, którą komórkę sformatować
  3. W polu Formatuj wartości, gdy ta formuła jest prawdziwa, wpisz: =HasNoFormula
  4. Wybierz żądany format

Testowane przy użyciu programu Excel 2010.

Deconinck Florian
źródło
Twoja odpowiedź jest niepełna. Nie sądzę, żebyś przetestował.
wilson
2
-1, to nic nie robi. Co to jest = HasNoFormula ma zrobić?
toryan