Jak uniemożliwić automatyczną zmianę formuł i formatowania warunkowego?

24

Przekonałem się, że formuły i zakresy formatowania warunkowego dostosowują się automatycznie podczas kopiowania, usuwania lub przenoszenia danych w arkuszu kalkulacyjnym. Chociaż jest to fajny pomysł, ma tendencję do psucia mi rzeczy w dość dziwny sposób.

Aby tego uniknąć, próbowałem napisać reguły, które miały zastosowanie do całego arkusza kalkulacyjnego i odłączyłem nagłówki kolumn, aby podświetlić dane, które chciałem sprawdzić.

Przykład: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))zastosowano do=$1:$1048576

Jednak nawet jeśli reguła została wyraźnie zastosowana do całego arkusza, nadal automatycznie się dostosowywał (i działał w dziwny sposób, robiąc to) podczas pracy w arkuszu.

Jak mogę tego uniknąć?

Iszi
źródło
Może po prostu nie możesz użyć całego arkusza kalkulacyjnego ... Czy możesz podać bardziej konkretny przykład tego, co robisz?
Doktoro Reichard,
Czy możesz mieć zrzut ekranu i wskazać, które obszary ulegają uszkodzeniu?
Jerry
@JohnBensin To brzmi jak dokładnie tego szukałem. Spróbuję to zapamiętać następnym razem.
Iszi
@Iszi dodałem to jako odpowiedź. Jestem pewien, że wiesz, jak dodawać nazwane zakresy, ale w odpowiedzi dołączam szczegółowe informacje dla przyszłych gości (i ponieważ kiedy po raz pierwszy nauczyłem się obsługiwać program Excel, nigdy nie pamiętałem).
John Bensin,
Artykuł o tym, co się nie powiedzie: koszmar formatowania warunkowego Excel 2010 . Z pewnością pogorszyły sytuację, próbując uczynić ją nieco lepszą ...
RomanSt

Odpowiedzi:

7

Kiedy potrzebuję zakresu, który nie powinien się zmieniać w żadnych okolicznościach, w tym przenoszenia, wstawiania i usuwania komórek, użyłem nazwanego zakresu i INDIRECTfunkcji.

Na przykład, jeśli chcę, aby zakres zawsze dotyczył komórek A1:A50, zdefiniowałem nazwany zakres za pomocą Menedżera nazw:

dodaj nazwany zakres

W Menedżerze nazw dodaj nowy zakres (kliknij Nowy), aw polu Odwołuje się do: użyj funkcji POŚREDNIE, aby określić żądany zakres komórek, np . =INDIRECT("A1:A50")Lub =INDIRECT("Sheet!A1:A50"). Ponieważ zakres jest technicznie tylko argumentem tekstowym, żadna liczba przestawionych komórek nie spowoduje, że Excel go zaktualizuje.

Działa to również w co najmniej Excel 2010 i Excel 2013. Chociaż mój zrzut ekranu pochodzi z 2013 roku, w przeszłości korzystałem z tej dokładnej techniki w 2010 roku.

Ostrzeżenia

  1. Pamiętaj, że ta niezmienność może Cię również potknąć. Na przykład jeśli zmienisz nazwę arkusza, nazwany zakres ulegnie uszkodzeniu.

  2. Zauważyłem niewielki spadek wydajności podczas korzystania z tej strategii na znacznej liczbie komórek. Model, którego używam w pracy, wykorzystuje tę technikę z nazwanymi zakresami, które obejmują kilka tysięcy różnych zakresów komórek, a Excel czuje się trochę powolny, gdy aktualizuję komórki w tych zakresach. Może to być moja wyobraźnia lub fakt, że Excel wykonuje dodatkowe wywołania funkcji do POŚREDNIEGO.

John Bensin
źródło
Chociaż wymieniony zakres zapewnia wygodną metodę odwoływania się do komórek docelowych, nie możesz po prostu użyć tej INDIRECTfunkcji samodzielnie?
Iszi
@Iszi Tak, wierzę w to. Jednak, jak mówisz, nazwane zakresy są wygodne i często odnoszę się do tego samego zakresu komórek w wielu miejscach w całym skoroszycie. Staram się, aby zakresy były jak najmniejsze ze względów wydajnościowych i zmieniam je tylko w razie potrzeby, więc użycie nazwanego zakresu oznacza, że ​​muszę go zmienić tylko w jednym miejscu.
John Bensin
@Iszi Czy w ogóle użyłeś tej metody? Jeśli napotkasz jakieś pułapki lub wady, o których nie wspomniałem, daj mi znać lub zmień je w odpowiedzi. Używam tej strategii w wystarczającej liczbie miejsc, w których nie chcę, aby coś wróciło, by cię prześladować.
John Bensin
Nie wdrożyłem go jeszcze, ale prawdopodobnie zrobię to następnym razem, gdy napotkam ten problem. Powiadomię cię, jeśli będą jakieś problemy.
Iszi
9
Próbowałem użyć nazwanego zakresu w kolumnie „Dotyczy” w Menedżerze reguł formatowania warunkowego, ale nazwany zakres rozszerza się, gdy kliknę „OK” lub „Zastosuj”. Czy robię to źle?
Mihai Alexandru Bîrsan
2

Przekonałem się, że reguły są bardzo łatwe do złamania, ale możesz spróbować czegoś, co nie łamie żadnych reguł.

Możesz zmienić tekst w komórkach. Jeśli chcesz dodać wiersz, dodaj dane na końcu tabeli i ponownie je posortuj. Jeśli chcesz usunąć wiersz, usuń tylko tekst / liczby, a następnie ponownie posortuj tabelę.

Działa to dla mnie, gdy mam formatowanie warunkowe zastosowane do kolumn i zwykle ustawiam formatowanie dla całej kolumny, np. $ F: $ F. Powinno nadal działać, jeśli formatujesz dla zakresu częściowego, po prostu upewnij się, że po zakończeniu dodawania / usuwania i uciekania się do tego, że wszystkie dane, które chcesz sformatować, nadal mieszczą się w oryginalnych parametrach zakresu.

To także dla mnie ogromna frustracja.

Mam nadzieję, że to pomoże.

Paweł
źródło
1

Nie jestem tak pewny i zmierzyć się z tym samym problemem często.

Powiedziałbym, że pole „Zastosuj do” w panelu Formatowanie warunkowe (CF) ZAWSZE będzie działać dynamicznie. Tak więc ZAWSZE skonwertuje wszelkie odniesienia do formatu =$A$1:$A$50.

To ból.

Leandro Ferreira Fernandes
źródło
Nie robi tego, nawet gdy używam deklaracji jawnych lub zmiennych ($ lub no $).
Paul
1

Odkryłem, że użycie INDIRECTfunkcji i ROWfunkcji w regule formatowania warunkowego eliminuje problem tworzenia nowych reguł i zmiany zakresu w programie Excel.

Na przykład chciałem dodać linię między wierszami w arkuszu kalkulacyjnym rejestru książeczki czekowej, gdy miesiąc zmienił się z jednego wiersza do następnego. Tak więc moja formuła w regule CF to:

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

gdzie kolumna C w moim arkuszu kalkulacyjnym zawiera datę. Nie musiałem robić nic specjalnego dla zakresu (nie musiałem definiować nazwy zakresu itp.).

Dlatego w przykładzie oryginalnego plakatu zamiast „A1” lub „A $ 1” w regule CF użyj:

INDIRECT("A"&ROW())
CRS
źródło
0

Wystąpił bardzo podobny problem. Zrobiłem kilka makr, aby dodać wiersze i skopiować formuły, a następnie dostosować kolumny i rozmiary wierszy, aby sformatować wygląd arkusza. Odkryłem, że ten problem występuje w jednym z dwóch przypadków.

1) Gdy coś z INSIDE „dotyczy” jest wycinane / wklejane poza tym zakresem.

2) Gdy komórki są scalone wewnątrz „dotyczy”, a dowolny z wierszy lub kolumn zostanie dostosowany.

Pojawia się podczas problemu z połączoną komórką, że program Excel musi wszystko rozdzielić, ponownie obliczyć swoją aplikację warunkową, dostosować wszystkie komórki (dodać lub usunąć wiersze lub co nie), a następnie ponownie je scalić. Jest dla nas niewidoczny, ale wydaje się, że tak właśnie jest.

Myśl, która może nam pomóc w rozwiązaniu tego problemu.

-T

Terrence
źródło
0

Mam na to proste rozwiązanie.

Po prostu przejdź do komórki znajdującej się w zasięgu (tej, która nie jest zepsuta zakresu), kliknij Format malarza, a następnie wklej całą kolumnę. Ponownie pokaże, gdzie się zepsuł, wystarczy zrobić malarza formatów do komórki, która przekroczyła zasięg. Teraz to też może wydawać się nieco długie, możesz po prostu zbudować proste makro do tego.

Girish Nagarhalli
źródło
0

W formule formatowania warunkowego użyj R1C1notacji z INDIRECTfunkcją:
Przykład 1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

Przykład 2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)
Karen B.
źródło
0

Jeśli przypadkiem użycia jest wygenerowanie arkusza kalkulacyjnego raportu, powinno to działać dobrze:


Możesz ominąć nadmierną pomoc programu Excel za pomocą kilku jednorazowych kroków konfiguracji, jeśli chcesz ręcznie wykonać proste odświeżenie ostatecznych danych po wykonaniu wszystkich danych.

Zakładając, że dane są ułożone normalnie (w rzędach):

  1. Wprowadź wszystkie dane w jednym arkuszu. W tym samouczku nazwiebym arkusz Input. Nie stosuj do niego żadnego formatowania warunkowego. Możesz swobodnie przenosić wartości do treści twojego serca (np. Usuń / wstaw / kopiuj / wklej)
  2. Utwórz kolejny pusty arkusz i nazwij go tak, jak chcesz (np Output.). Ręcznie skopiuj swoje globalne formatowanie, takie jak szerokości kolumn i formatowanie nagłówków (nie zawartość nagłówków, tylko formatowanie).
  3. Zamień $A$1w poniższej formule lokalizację początku wiersza nagłówka, a następnie skopiuj wszystkie kolumny i wiersze, które chcesz wydrukować: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") ( IF(LEN(...)>0,...,"")instrukcja jest niezbędna, ponieważ program Excel również pomaga określić typy danych dla Ciebie i używa 0w przeciwnym razie pustych komórek oraz te -1terminy pochodzą z offsetu kontra porządkowych semantyki)
  4. Zastosuj formatowanie warunkowe do Outputarkusza.

Spowoduje to skopiowanie Inputarkusza danych do Outputarkusza bez odwołań do komórek, które program Excel automatycznie wykonałby za rzeźnikiem, dzięki czemu można z pewnością zdefiniować formatowanie warunkowe na Outputarkuszu.

Wystarczy ręcznie rozszerzyć zakres, w którym formuła jest stosowana w Outputarkuszu, gdy Inputzmienia się rozmiar danych.

Sugeruję unikanie łączenia jakichkolwiek komórek.


PS To pytanie było zadawane wiele razy (dotyczy to również Arkuszy Google, które są klonem Excela), więc możesz znaleźć lepsze rozwiązanie dla swojego przypadku użycia, przeglądając je:

  1. Fragmentacja formatowania warunkowego programu Excel
  2. (ten) Jak zatrzymać automatyczne zmienianie formuł i zakresów formatowania warunkowego?
  3. Zachowaj formatowanie warunkowe przy wycinaniu i wklejaniu
  4. Excel: jak na stałe zastosować formatowanie warunkowe w całym arkuszu kalkulacyjnym?
  5. Dlaczego program Excel maskuje moje formatowanie warunkowe?
Elaskanator
źródło
0

Jeśli wkleisz bez formatu ( Paste > Paste Special > Unicode Textlub podobnego), specjalne formatowanie nie zostanie skopiowane i jako takie ustawienie „Dotyczy” nie powinno się zmienić.

Możesz usunąć wiersze / kolumny, ale jeśli je wstawisz, zakres „Dotyczy” zostanie podzielony.

Rozszerzasz obszar, wybierając ostatni wiersz / kolumnę i „przeciągnij” na małym kwadracie w lewym dolnym rogu „kursora”. W ten sposób zakres „Zastosuj do” powinien pozostać nienaruszony. (Pamiętaj, że nie spowoduje to rozszerzenia żadnych formuł w wierszach lub kolumnach, jak w przypadku wstawiania).

Jednak wklejanie bez formatu itd. Jest całkowitym bólem. Zwykle tego nie robię.

Czasami definiuję także nazwę obszaru, który chcę sformatować. Nie będzie on używany w regule, ale można wyczyścić regułę, usuwając wszystkie reguły oprócz jednej i używając nazwy obszaru w sekcji „Dotyczy”.

Testowałem na komputerze Mac przy użyciu programu Excel 16.3 (myślę, że Office 2016 ... hmm).

Erk
źródło