Wyświetlaj puste podczas odwoływania się do pustej komórki w programie Excel 2010


27

Mam skoroszyt programu Excel 2010, który zawiera wiele pojedynczych arkuszy. Komórki na jednym z arkuszy są połączone z pojedynczymi komórkami na dwóch innych arkuszach w tym samym skoroszycie. Używam bezpośredniego odwołania do komórki, które zasadniczo mówi, że dowolna wartość wprowadzona do konkretnej komórki na jednym arkuszu również wypełnia komórki na dwóch innych arkuszach. W tym celu użyłem funkcji (=) z odwołaniem do komórki.

Problem, na który wpadam, polega na tym, że nawet gdy podstawowa komórka jest pusta, komórki wypełniające się z tej podstawowej komórki będą wyświetlać 0, a nie same pozostać puste.

Chcę, aby podrzędne komórki pozostały puste, jeśli podstawowa komórka, z którą są połączone, jest pusta.


Moja formuła jest bardzo długa, dla mnie również konstrukcja IF jest trudna do zaakceptowania, dobre pytanie, ale ja również nie znalazłem wystarczająco dobrej odpowiedzi. {= IFERROR (INDEX (NEPŘÍMÝ.ODKAZ („EsZkouska”); SMALL (KDYŽ ((INDEX (NEPŘÍMÝ.ODKAZ („EsZkouska”) ;; 1; 1; 1) 1 = 1; 1) = = ČSN721180 ”) * * (INDEX (NEPŘÍMÝ.ODKAZ („ EsZkouska ”) ;; 9; 1) =„ RC_P_B ”); ŘÁDEK (NEPŘÍMÝ.ODKAZ („ EsZkouska ”)) - MIN (ŘÁDEK (NEPŘÍMÝ.ODKAZ („ EsZkouska ”))) + 1;„ ”); 1) ; 17; 1); "")}
Vojtěch Dohnal

Jest możliwe zastosowanie konstrukcji w połączeniu z tym podejściem stackoverflow.com/questions/22359452/... . W ten sposób możesz tworzyć nazwane formuły i używać ich w prostej instrukcji IF ...
Vojtěch Dohnal

Odpowiedzi:


49

Musisz zmusić program Excel do traktowania zawartości komórki jako wartości tekstowej zamiast liczby, co robi się automatycznie z pustymi wartościami.

=A2 & ""

Zmusi to program Excel do uczynienia z tej komórki odwołania wartości tekstowej, zapobiegając w ten sposób konwersji pustych znaków w zera.


4
Łał! Nie mogę uwierzyć, że okazało się to takie proste!
Scott

1
Jak rozwiązanie radzi sobie z formatowaniem wprowadzania liczb? Wydaje mi się, że ta odpowiedź niszczy dane liczbowe. Jasne - nie dostajesz 0, gdy komórka jest pusta, ale dostajesz również dane tekstowe zamiast numerycznych ... Czy to jest problem w praktyce, czy masz jakieś uspokajające słowa?
LudvigH,

1
Przechowuje go jako tekst. Jednak gdy używasz go w równaniu matematycznym, Excel powinien przekonwertować go z powrotem na liczbę. W praktyce jednak to rozwiązanie byłoby wdrażane tylko w raporcie, w którym wykonałeś już pracę za kulisami w innych arkuszach lub ukrytych kolumnach.
wbeard52

18

Oto trzy odpowiedzi:

1) Pozwolenie other.cell.reference reprezentuje formułę referencyjną, którą aktualnie masz po =(np.  Sheet17!$H$42), Zamień referencję na link

=IF(other.cell.reference <>"",other.cell.reference, "")

2) Ustaw format „numer” z Twoich połączonych komórek „Niestandardowy”: General;–General;.

3) Na stronie „Opcje programu Excel”, na stronie „Zaawansowane”, w sekcji „Opcje wyświetlania tego arkusza roboczego” wyczyść pole wyboru „Pokaż zero w komórkach, które mają wartość zerową”. Ostrzeżenie: spowoduje to zniknięcie wszystkich zer w arkuszu.


1
Pierwsza opcja jest nieoptymalna, ponieważ wymaga dwukrotnego wpisania (lub skopiowania) formuły w komórce. Może to być szczególnie nieprzyjemne, gdy masz naprawdę długą formułę, a następnie musisz ją później edytować (lub, co gorsza, debugować). Druga opcja wydaje mi się nie działać, ale może robię to źle. Trzeci zdecydowanie nie jest idealny, ponieważ zakres jego działania jest znacznie szerszy, niż można by się spodziewać. Czy naprawdę nie ma lepszych opcji?
Iszi

@Iszi: Jeśli chodzi o pierwszą opcję: nie mówię o dwukrotnym wprowadzaniu formuły . Zgodnie z pierwotnym pytaniem mówię o sytuacji, w której Q1zawiera (naprawdę długą) formułę i A1zawiera =Q1; chcemy zmienić A1na =IF(Q1<>"", Q1, ""), którego nigdy nie powinieneś potrzebować ponownie. „Czy naprawdę nie ma lepszych opcji?” Cóż, to pytanie było bezczynne od dziewięciu miesięcy i to wszystko, co zostało opublikowane. Jeśli te odpowiedzi nie są dla Ciebie wystarczające, zadaj nowe pytanie lub nagradzaj je za to.
Scott

To mniej więcej to samo. Chociaż rozwiązuje to część uciążliwości polegającej na rozwiązywaniu problemów z dwoma wystąpieniami jednej formuły w jednej komórce, komplikuje to również trochę przez dodanie innej (niepotrzebnej) komórki lub grupy komórek do miksu. Niestety, przypuszczam, że tak naprawdę nie ma na to innej „ładnej i czystej” odpowiedzi.
Iszi

Jakiś czas temu opublikowałem powiązane pytanie i jedyna wartościowa odpowiedź, która różni się od tego, co jest tutaj, dotyczyła skryptu VBA.
Iszi

4

JEŻELI twoje dane referencyjne są tylko typem liczbowym (nietekstowym) lub puste i możesz mieć 0, to jest moje preferowane podejście, z wprowadzaniem formuły tylko raz. Trzeba przyznać, że jest to sposób nieco pośredni, ale myślę, że najlepiej, ponieważ:

  • nie potrzebujesz dodatkowych komórek, aby wstawić formułę, a następnie odwołać się do drugiej komórki
  • nie musisz wpisywać formuły dwa razy
  • ta metoda rozróżnia między wartością zerową a pustą komórką
  • nie wymaga VBA
  • nie wymaga nazwanych zakresów

Upadek : jeśli potrzebujesz zwróconych danych tekstowych, to nie zadziała. W przypadku danych tekstowych moją preferowaną metodą jest użycie formatu liczbowego, jak wspomniano w innych odpowiedziach powyżej.

=IFERROR((A1 & "") * 1,"")

A1 w tym przypadku można zastąpić dowolną komórką, w tym innym arkuszem, skoroszytem lub INDIRECT ().

Uwagi na temat tego, jak to działa:
IFERROR () - drugi argument jest ustawiony na pusty ciąg, więc jeśli wystąpi błąd, otrzymamy pusty ciąg. Musimy więc upewnić się, że jeśli komórka źródłowa jest pusta, wywoływany jest błąd.

Metoda numeryczna : Potwierdź wartość źródłową, a następnie pomnóż ją przez 1. Dosłowny ciąg pusty * 1 = # WARTOŚĆ, Ciąg z liczbą jest automatycznie konwertowany na wartość liczbową i nie występuje błąd.


Ciekawy. Jak myślisz, dlaczego potrzebujesz "" & A1 & ""? Kiedy to daje różne wyniki z A1 & ""lub "" & A1?
G-Man mówi „Reinstate Monica”

@ G-man: poprawny i preferowany. Dzięki zaktualizowałem odpowiedź.
rayzinnz

4

Jest jeszcze jedna sztuczka: ustaw w pustej komórce soucre formułę ="". Zobacz szczegółowy opis tutaj.


Jest to dla mnie idealne rozwiązanie, ponieważ komórki, do których się odwołuję, są mniejsze niż komórki, które się do nich odwołują. Dzięki!
Kit

2

Ja również nie znalazłem lepszego rozwiązania niż Scott.

Ale myślę, że w połączeniu z tym podejściem może być prawie do zniesienia:

http://www.ozgrid.com/Excel/named-formulas.htm

Powiedzmy, że mam taką formułę

= IFERROR( INDEX(INDIRECT("EsZkouska");
  SMALL(IF((INDEX(INDIRECT("EsZkouska");;1‌​;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
  ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")

Ta formuła odczytuje wartość komórki z arkusza danych przy użyciu wyboru warunkowego i przedstawia je na innym arkuszu. Nie mam kontroli nad formatowaniem komórek w arkuszu danych.

Idę do Wstaw> Nazwa> Zdefiniuj iw „Nazwach w skoroszycie” tworzę nową nazwę „RC_P_B”. Następnie w polu „Odwołuje się do” kopiuję moją formułę (bez znaków {} - jest to formuła tablicowa).

Następnie możesz użyć formuły Scotta bez potrzeby powtarzania całego tekstu formuły:

 {=IF(RC_P_B<>""; RC_P_B;"---")}

Uważam, że to lepsze niż skopiowanie całej formuły.


2

Po prostu nie używam formuły, aby rozwiązać ten problem. Wszystko, co robię, to warunkowo formatować komórki na kolor czcionki biały, jeśli wartość komórki jest równa 0.


5
Ma to oczywisty problem z komórkami, które mają prawidłową wartość 0.
Dmitrij Grigoryev

Ma również wadę spowalniania obliczeń, szczególnie w przypadku dużych arkuszy kalkulacyjnych, ponieważ formuły formatowania warunkowego są „bardzo” niestabilne. (Są również oceniane za każdym razem, gdy ekran jest odmalowywany.)
robinCTS

1

Jeśli połączona komórka jest nienumeryczna, możesz użyć instrukcji IF z ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")

1
Ale jeśli komórka Sheet1!A2, do której istnieje odwołanie ( w twoim przykładzie) zawiera liczbę, spowoduje to wyświetlenie pustego ciągu.
Scott,

Tak, nie było jasne z pytania, jakie dane znajdują się w komórce, do której istnieje odwołanie. Uznałem, że gdyby był liczbowy, chciałby zer.
Brad Patton,

1

Długo szukałem eleganckiego rozwiązania tego problemu.

Używam formuły = if (a2 = "", "", a2) od lat, ale uważam, że jest to trochę kłopotliwe.

Próbowałem powyżej sugestii = a2 & "" i chociaż wydaje się, że działa, pokazuje liczbę, która jest w rzeczywistości tekstem, więc formatowanie liczb nie może być zastosowane i żadne operacje statystyczne, takie jak suma, średnia, mediana itp., Więc jeśli jest wykonalne liczby, których szukasz, nie pasują do rachunku.

Eksperymentowałem z niektórymi innymi funkcjami i znalazłem najbardziej eleganckie jak dotąd rozwiązanie. Kontynuując powyższy przykład:

= KOMÓRKA („treść”, A2)

zwraca wartość liczbową, którą można sformatować jako liczbę i zwraca wartość pustą, gdy komórka odniesienia jest pusta. Z jakiegoś powodu to rozwiązanie nie pojawia się w żadnej z sugestii online, które znalazłem, ale tak


1
Właśnie próbowałem tego w programie Excel 2013. Gdy A2jest puste, wyświetla się 0. Czy na pewno nic nie robisz z formatowaniem?
Scott

1

Rozwiązanie dla Excela 2010:

  1. Otwórz plik"
  2. Naciśnij „Opcje”
  3. Kliknij „Zaawansowane”
  4. W sekcji „Opcje wyświetlania” dla tego arkusza „BBBB”
  5. Odznacz pole „Pokaż wartość zerową dla komórek, które mają wartość zerową”.

Powiedziałem to w (trzeciej opcji)  mojej odpowiedzi .
Scott

0
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String

Dim Result As Variant

If IsEmpty(MyCell) Then

   FuncDisplayStringNoValue = "No Value"

Else
   Result = CDec(MyCell)

   Result = Round(Result, 2)

   FuncDisplayStringNoValue = "" & Result

   End If

End Function


-1

W Office 2013 działało dla mnie:

=IF(A2=""," ",A2)

Gdzie w pierwszym zestawie cytatów nie ma spacji, a w drugim zestawie jest spacja.

Mam nadzieję że to pomoże


Dlaczego potrzebujesz miejsca w drugim zestawie nawiasów? Nie =IF(A2="", "", A2)działa tak dobrze? Czym by to się różniło =IF(A2<>"", A2, "")? Czym zatem różni się od najlepiej głosowanej odpowiedzi udzielonej ponad dwa lata temu?
G-Man mówi „Przywróć Monikę”

-1

Miałem podobny problem i myślę, że znalazłem dla ciebie metodę. To naprawiło moje problemy.

Jeśli chcesz, aby kolumna C odwoływała się do kolumny A i pisała tylko formułę dla komórki referencyjnej, użyj tego i przeciągnij kolumnę w dół.

=A1

Jednak mogą istnieć komórki źródłowe w kolumnie A, które są puste i muszą pozostać puste w komórkach odniesienia w kolumnie C, możesz tego użyć i przeciągnąć kolumnę w dół.

=T(A1)

Jeśli chodzi o formatowanie komórki, odwołanie (kolumna C) będzie musiało być ogólne.


Niestety, to było najważniejsze pytanie - OP przyszedł do Super User (prawie trzy lata temu), zadał to jedno pytanie i nigdy nie wrócił. Możemy więc nigdy nie poznać szczegółów jego sytuacji. Ale głównym (jeśli nie dur ) funkcja programu Excel jest schrupać numery. Jeśli dane źródłowe (w twoim przykładzie kolumna A) zawierają liczby, twoja odpowiedź nie zapełni komórek docelowych danymi liczbowymi.
Scott

Upewnij się, że formowanie komórek w komórkach zawierających formułę = T () ma charakter ogólny, a nie tekstowy. Ponieważ tam, gdzie go użyłem, całkowicie pokazuje liczby.
Will Prater,

Sprawdziłem. To jest generał i robi się pusty. (Excel 2013)
Scott

Problemem może być to, że używasz 2013 roku, moja odpowiedź na 2010 rok.
Czy Prater

Była odpowiedź (teraz usunięta; możesz ją zobaczyć tylko wtedy, gdy twój przedstawiciel ma ≥10000), która zgłosiła, że ​​to również nie zadziałało w programie Excel 2010.
Scott

-1

Rozwiązanie:
=IF('Wk1 Data-replace w dt bgn & end'!C2>0, 'Wk1 Data-replace w dt bgn & end'!C2, "")

Objaśnienie:
Aby rozwiązać ten problem, użyłem dwóch zestawów Ifpoleceń.

Część pierwsza polecenia:
Powiedziałem komórce, aby wyświetlała zawartość komórki referencyjnej, jeśli komórka referencyjna zawierała dane (Excel interpretuje to jako komórkę o wartości większej niż 0)

Część druga polecenia:
Powiedziałem, jak się zachować, jeśli nie ma danych; „” oznacza pozostaw puste

Uwaga: Wk1 Data-replace w dt bgn & end '! C2 to moja komórka referencyjna.


(1) Wyświetli się puste, nawet jeśli komórka, do której istnieje odwołanie, zawiera 0 lub liczbę ujemną. Pytanie chce, aby komórka łącząca była pusta tylko wtedy, gdy komórka, do której istnieje odwołanie, jest pusta . (2) Jeśli dokonasz oczywistej zmiany i zmienisz ją na =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), staje się ona równoważna odpowiedzi, która została udzielona już około cztery razy.
G-Man mówi „Przywróć Monikę”

-1

Wszystkie te rozwiązania są dla mnie zbyt skomplikowane i zdaję sobie sprawę, że może nie być to wykonalne we wszystkich aplikacjach, ale po prostu wypełniam pole źródłowe pustym miejscem i otrzymuję puste pole docelowe.


1
Jak wypełnić komórkę spacją i co rozumiesz przez spację?
fixer1234,

Przepraszam, powinienem był powiedzieć znak spacji. W ten sposób komórka nie jest właściwie pusta. W komórce źródłowej znajduje się spacja, która sprowadza się do skopiowanej do komórki docelowej.
John Alonso,

-1

Mam dla mnie rozwiązanie:

IF(cell reference="","",cell reference)

Wyjaśnienie:

""jest równe pustej lub pustej komórce. Teraz odwracam tylko jeśli. Jeśli komórka jest pusta, pozostaw ją pustą, w przeciwnym razie użyj odwołania do komórki.


Jest to w zasadzie to samo, co pierwsze rozwiązanie w superuser.com/a/515941
Arjan

-2

Przejdź do Formatuj komórki.

Następnie wybierz format niestandardowy i wprowadź następujące dane: 0;-0;;@


2
Czy możesz wyjaśnić, co to robi? Dzięki.
fixer1234,

1
Robi to prawie to samo, co druga opcja mojej odpowiedzi na to pytanie («Ustaw format„ Liczba ”połączonych komórek na„ Niestandardowy ”: General;–General;.”) - mianowicie (a) jeśli wartość jest liczbą dodatnią, wyświetlać całkowitą wartość bezwzględną; (b) jeżeli wartość jest liczbą ujemną, wyświetl jej całkowitą wartość bezwzględną, poprzedzoną znakiem -; (c) jeśli wartość wynosi zero, nie wyświetlaj niczego ; oraz (d) jeśli wartość nie jest liczbą, wyświetl jej wartość tekstową. … (Ciąg dalszy)
Scott,

1
(Ciąg dalszy)… Jednak ta wersja ma tę wadę (tj. Błąd), że zaokrągla liczby niecałkowite do najbliższej liczby całkowitej. ( Generaldaje domyślny format liczb, w tym cyfry dziesiętne, jeśli to konieczne (ale bez -znaku)). Również końcowy ;@wydaje się niepotrzebny (tj. wydaje się, że jest domyślny), ponieważ moja odpowiedź poprawnie wyświetla wartości tekstowe bez modyfikacji.
Scott,
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.