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)?


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

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?”.


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.

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.



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ą.


-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.


Twoja odpowiedź jest niepełna. Nie sądzę, żebyś przetestował.
— wilson

2
-1, to nic nie robi. Co to jest = HasNoFormula ma zrobić?
— toryan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.