Excel'deki formülden boş hücre döndürme


219

Boş bir hücreyi Excel formülünden döndürmek gerekiyor, ancak Excel boş bir dize veya boş bir hücreye gerçek bir boş hücreden farklı bir başvuru davranır gibi görünüyor. Yani aslında bir şeye ihtiyacım var

=IF(some_condition,EMPTY(),some_value)

Gibi şeyler yapmaya çalıştım

=IF(some_condition,"",some_value)

ve

=IF(some_condition,,some_value)

ve B1'in boş bir hücre olduğunu varsayarsak

=IF(some_condition,B1,some_value)

ama bunların hiçbiri gerçek boş hücreler gibi görünmüyor, sanırım çünkü bunlar bir formülün sonucu. Bir hücreyi ancak bazı koşullar yerine getirilirse ve aksi takdirde hücreyi gerçekten boş tutarsa ​​doldurmanın herhangi bir yolu var mı?

EDIT: önerildiği gibi, NA () döndürmek için çalıştı, ama benim için bu da işe yaramadı. Bunu VB ile yapmanın bir yolu var mı?

DÜZENLEME: Verileri bir veritabanına alır bir uygulamanın çok özel taleplerine biçimlendirilmiş diğer çalışma sayfalarından veri çeken bir çalışma sayfası yapıyorum. Bu uygulamanın uygulamasını değiştirmek için erişimim yok ve değer gerçekten boş yerine "" ise başarısız olur.


8
Hücrenin neden boş olması gerektiğini açıklayabilir misiniz? Hangi "boşluğun" size ulaştığına bağlı olarak, bir çözüm olabilir.
JT Grimes

3
Hücre formülü içerir, değil mi? O zaman nasıl boş veya boş olabilir?
Sinan Ünür

8
Benzer bir sorun var, ben bir grafik çiziyorum ve grafikte boş öğeler için 0 değerini göstermek istemiyorum. Kayıtlar boş hücreler ise grafikten atlar, ancak aşağıdaki "Cevaplar" bölümünde listelenen yöntemlerden herhangi biri grafikte 0'ların gösterilmesine neden olur. :(
Cobusve

5
Sıfırların grafiklerde gösterilmesini önlemek için boş dize / sıfır yerine NA () işlevini kullanın. Bu, grafik yordamı tarafından yok sayılan hücreye #YOK koyar.
Rob

5
Rob'un #YOK kullanma önerisinin boş bir hücreden farklı bir sonucu vardır. #YOK, grafik üzerinde rutin hücre üzerinde enterpolasyona neden olurken, gerçekten boş bir hücre, hattaki bir boşluk olarak değerlendirilecektir. Boşluk boyunca ENTERPOLATION yerine satırda bir GAP istiyorsanız, hücreye göre BOŞ olması gerekir ve soruya göre #YOK değil. Aşağıda sorulduğu gibi bu konuya değinen çözümler vardır.
Bay Purple

Yanıtlar:


50

O zaman kullanmak zorunda kalacaksın VBA. Aralıktaki hücreler üzerinde yineleme yapar, koşulu test eder ve eşleşirse içeriği silersiniz.

Gibi bir şey:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next

6
Buna ekleyeceğim: her zaman boş hücreleri temizlemek istediğiniz belirli bir hücre aralığınız varsa, bu aralığa bir ad verebilir, ardından SomeRange öğesini Range ("MyRange") olarak değiştirerek Boofus formülünü değiştirebilirsiniz. Hücreleriniz için bir ad ayarlamak üzere hücreleri seçin, şeridin Formüller sekmesinde Adı Tanımla'yı tıklayın ve Ad alanına "MyRange" yazın. (Ve elbette
MyRange'ı

31
Excel'de null sabitinin olmaması çok yoğun.
ted.strauss

5
Makroyu worksheet_calculate () işlevine koyarsanız, hücreler otomatik olarak boşalır. Ayrıntılı bilgi için cevabımı aşağıda görebilirsiniz.
Bay Purple

3
@ ted.strauss oradaVbNullString
brettdj

5
@brettdj Bu VBA, Excel değil. Biz boşuna NULL () veya BLANK () gibi bir tür işlev için uzun ve sert lobbied var.
Jon Peltier

75

Excel'in bunu yapmanın bir yolu yoktur.

Excel'deki bir hücredeki formülün sonucu bir sayı, metin, mantıksal (boole) veya hata olmalıdır. "Boş" veya "boş" formül hücre değeri türü yoktur.

İzlediğim bir uygulama, NA () ve ISNA () kullanmaktır, ancak NA () 'nın diğer işlevlerle (SUM (NA ( )) #YOK ise, A1 boşsa SUM (A1) 0'dır).


19
NA () yöntemi, boş hücreleri boşluk olarak gösterecek şekilde ayarlanmış grafikler için% 100 çalışır; bu, bir formül içerdiğinden hücrenin boş olması gereken bir uygulamaya dışa aktardığınız durumunuz için çalışmayacaktır ...
Cobusve

4
Mükemmel bir çözüm yok. NA () iyi bir seçenektir. Diğeri ise (bağlı olarak) '' veya "" 'nın boş dizesidir
Jason

Bu, boş hücrelerin grafik olarak boşluk olarak göz ardı edilmesi seçeneğini etkin bir şekilde kullanabilmeniz için, çizilecek olan verilerde dinamik olarak döndürülmesi amacıyla çalışır. Benim durumumda, aylık bir ilerlemeyi temsil etmek için 12 değeri çizmeye çalışıyordum, ancak sadece bir önceki aya kadar, böyle bir formülle: = IF (MONTH (TODAY ())> C2; $ C $ 11 + C7; NA ( ))
EKI

Bu benim için çalıştı. Her gün eklediğim verilerle bir grafiğim var - scrum için bir burndown çizelgesi ve çizginin sadece geçerli güne kadar uzandığını görmek istedim. Bu, bir IF deyiminde NA () kullanarak bunu yapmama yardımcı oldu. Teşekkürler!
theJerm

12
NA () bir boşluk yaratmaz. Herkes bunu yanlış anlıyor. Değer NA () veya #YOK ise Excel bir işaretçi çizmez, ancak bitişik olmayan #YOK değerleri arasında enterpolasyonlu bir çizgi çizer .
Jon Peltier

38

Evet mümkün.

Koşul sağlandığında trueblank'a göre değerlendirici bir yok edici formüle sahip olmak mümkündür. ISBLANKFormül testini geçer .

resim açıklamasını buraya girin

Tek ihtiyacınız olan, adlandırılmış bir aralık oluşturmaktır, örneğin GetTrueBlank, sorunuzdaki gibi aşağıdaki kalıbı kullanabilirsiniz:

=IF(A1 = "Hello world", GetTrueBlank, A1)

Adım 1. Bu kodu VBA Modülüne yerleştirin.

Function Delete_UDF(rng)
    ThisWorkbook.Application.Volatile
    rng.Value = ""
End Function

Aşama 2. ise Sheet1de A1hücre aralığı adlı ekleyin GetTrueBlank, aşağıdaki formüle sahip:

=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")

resim açıklamasını buraya girin

Bu kadar. Başka adım yok. Sadece kendi kendine imha formülünü kullanın. Diyelim ki B2aşağıdaki formülü hücreye koyun :

=IF(A2=0,GetTrueBlank,A2)

Yukarıdaki formül, B20 girerseniz trueblank olarak değerlendirilir A2.

Sen edebilirsiniz Burada bir gösteri dosyasını indirmek .

Yukarıdaki örnekte, formülü trueblank olarak değerlendirmek boş bir hücre ile sonuçlanır. ISBLANKFormül sonuçlarının sonucunun DOĞRU olarak pozitif olarak kontrol edilmesi . Bu hara-kiri benzeri bir formüldür. Koşul karşılandığında formül hücreden kaybolur. Muhtemelen formülün kaybolmamasını isteseniz de hedefe ulaşıldı.

Bitişik hücreye sonuç döndürmek için formülü değiştirebilirsiniz, böylece formül kendini öldürmez. Komşu hücrede UDF sonucunun nasıl alınacağına bakın .

The FrankensTeam tarafından burada ortaya konan bir formül sonucu olarak trueblank alma örneklerine rastladım: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- hücre


5
Bu, tatlı bir çözümdür, ancak hücreyi fiziksel olarak boşaltmadan bunu yapmanın hiçbir yolu yoktur. Buradaki tek dezavantaj, yeniden hesaplama yaparken formülü yeniden sürüklemeyi hatırlamanız gerekeceğidir, ancak bunu yapmak için bir çalışma kitabı etkinliği ayarlayabileceğinizi tahmin ediyorum.
Some_Guy

Tatlı geçici çözümü kullanmaya çalışmadan önce lütfen geri tepebileceğini unutmayın .
GSerg

@GSerg Sadece VBA ile sonsuza dek gidecek bir döngü yapabileceğinizi mi söylüyorsunuz ve bu şekilde program asılacak mı? VBA maymunun elinde jilet olabilir . Ve bir aslan da geri vurdu bir söylenti var Bu daha korkutmak gerekir :-)
Przemyslaw Remin

@PrzemyslawRemin Hayır, Excel'in çökmesi de dahil olmak üzere çeşitli rastgele şeyler olabileceğini söylüyorum .
GSerg

20

Belki bu hile yapıyor, ama işe yarıyor!

Bir grafiğin kaynağı olan bir tabloya da ihtiyacım vardı ve boş veya sıfır hücrelerin grafikte bir nokta üretmesini istemedim. "Boş hücreleri Boşluk olarak göster" (radyo düğmesini tıklayın) için grafik özelliğini ayarlamanız, veri seçmeniz, gizli ve boş hücreler seçmeniz gerektiği doğrudur. Bu ilk adım.

Sonra çizilen istemediğiniz bir sonuçla sona erebilir hücrelerde, bir ile bir IF açıklamada formülü koymak NA()gibi sonuçları=IF($A8>TODAY(),NA(), *formula to be plotted*)

Bu, geçersiz bir hücre değeri oluştuğunda gerekli grafiği içermeyen bir grafik verir. Tabii ki bu, tüm hücreleri okumak için geçersiz değere sahip bırakır #N/Ave bu dağınıktır.

Bunu temizlemek için geçersiz değeri içerebilecek hücreyi seçin, ardından koşullu biçimlendirme - yeni kural'ı seçin. 'Yalnızca içeren hücreleri biçimlendir'i seçin ve kural açıklaması altında açılır kutudan' hatalar'ı seçin. Sonra biçim altında yazı tipi - renk - beyaz (veya arka plan renginiz ne olursa olsun) seçin. Dışarı çıkmak için çeşitli düğmelere tıklayın ve geçersiz verilere sahip hücrelerin boş göründüğünü görmelisiniz (aslında #N/Abeyaz bir arka plan üzerinde beyaz metin içerirler .


6
HAYIR!!! "boş hücreleri Boşluk olarak göster" Hücrelerin BOŞ olması gerekir. NOTHING yerine # N / A içeriyorlarsa, grafik yordamı # N / A hücreleri üzerinde satırda boşluk olarak bırakmak yerine enterpolasyon yapar. # N / A hücrelerinin enterpolasyonu yapılmasını istiyorsanız, bu iyi ancak bu durumda "boş hücreleri Boşluk olarak göster" UYGULANAMAZ
Bay Purple

4
@GreenAsJade Bu gerçek cevap değil, çünkü OP'nin ihtiyaçlarına uymuyor. Grafik sorunu için gerçekten ayrı bir soru olmalı.
ZX9

10

Kullandığım veri kümesi için böyle yaptım. Kıvrık ve aptal gibi görünüyor, ancak yukarıda belirtilen VB çözümünün nasıl kullanılacağını öğrenmenin tek alternatifiydi.

  1. Tüm verilerin bir "kopyasını" yaptım ve verileri "değerler" olarak yapıştırdım.
  2. Sonra yapıştırılan verileri vurguladım ve boş hücreleri bir harfle "değiştir" ( Ctrl- H) qyaptım, veri sayfamın hiçbir yerinde olmadığından seçtim .
  3. Sonunda, başka bir "yerine" yaptım ve yerine qhiçbir şey koymadım.

Bu üç adımlı işlem, tüm "boş" hücreleri "boş" hücrelere "dönüştürdü. Boş hücreyi boş bir hücreyle değiştirerek 2. ve 3. adımları birleştirmeyi denedim, ancak bu işe yaramadı - boş hücreyi bir tür gerçek metinle doldurun, ardından bu metni boş bir hücre ile değiştirin.


Bu sizin durumunuzda işe yaramış olsa da, otomatik olarak uygulanabilecek bir çözüme ihtiyacım vardı. Sonuçta, boş olduğu belirlenen şeyleri silmek için bir VB makrosu kullandığımı düşünüyorum. Bu makro dosyayı kaydetmeden hemen önce çalıştırıldı.
Bryan Ward

4
bu benim için en iyisiydi çünkü otomatik olması gerekmiyor, ama hızlı olması lazım. Esasen, Excel'in Bul ve Değiştir yoluyla eklenen boş bir değere saygı duyduğu anlamına gelir, bu benim için yeterince iyi!
rickcnagy

10

Hedef, aslında sıfır değerine sahip olduğunda bir hücreyi boş olarak görüntüleyebilmekse, bunun yerine boş veya boş bir hücreyle sonuçlanan ( empty()işlev olmadığı için ) bir formül kullanmak yerine,

  • Boş hücreyi istediğiniz yere dönmek bir 0yerine ""ve SONRA

  • pozitif ve negatif sayılar için (noktalı virgülle ayrılmış ilk iki öğe) istediğinizi bulmanız gereken hücreler için sayı biçimini ayarlayın. Benim durumumda, sahip olduğum sayılar 0, 1, 2 ... ve 0'ın boş görünmesini istedim. (Metin parametresinin ne için kullanıldığını hiç anlamadım, ancak gerekli görünüyordu).

    0;0;"";"text"@
    

4
Bu, hücreyi boş bırakmasa da (formülün boş bir hücreye neden olması mümkün değildir), sayı sıfırsa boş görünmesini sağlar. Ancak, yanlış. 0; -0; "" (eksi işaretine dikkat edin) veya hatta 0; -0; hiç alıntı yapmadan. Üçüncü noktalı virgül ve "text" @ bölümü gerekli değildir. Noktalı virgülle sınırlanan alanların anlamı: pozitif sayıların, negatif sayıların, sıfırın ve metnin nasıl görüntüleneceği (ikinci biçim bir @ içermelidir). office.microsoft.com/tr-tr/excel-help/…
cvoinescu

Sen bir tanrınsın efendim. Beni görsel temelden kurtardın. Siz
yönetirsiniz

7

Kullanarak hücreyi değerlendirmeyi deneyin LEN. Bir formül içeriyorsa LENgeri döner 0. Metin içeriyorsa, büyüktür 0.


Bu asıl askere yardımcı olmasa da, çoğu durumda bu aslında kötü bir cevap değildir. "" Adlı yere geri dönmek zorunda kaldığınız durumlar için iyi çalışır.
Technium

Harika cevap ama biraz kafa karıştırıcı. Test etmek istediğim hücre bir sayı döndürüyor ya ""da boş. LEN(cell)>0bir sayı varsa (sıfır dahil ve sayı bir formülle hesaplanıyorsa dahil) true, boş dize veya boşsa false değerini döndürür.
Chris

7

Vay be, inanılmaz sayıda insan soruyu yanlış okudu. Bir hücrenin boş görünmesi kolaydır . Sorun, hücrenin boş olması gerekiyorsa, Excel formülleri "değer yok" döndüremez, ancak yalnızca bir değer döndürebilir. Sıfır, boşluk veya hatta "" döndürmek bir değerdir.

Bu yüzden bir "sihirli değer" döndürmeniz ve ardından arama ve değiştirme veya VBA komut dosyası kullanarak hiçbir değer kullanmamanız gerekir. Bir boşluk veya "" kullanabilmenize rağmen, tavsiyem "NODATE" veya "NONUMBER" veya "XXXXX" gibi bariz bir değer kullanmaktır, böylece nerede olduğunu kolayca görebilirsiniz - "" bulmak oldukça zor "" bir e-tabloda.


1
Evet bu benim yaptığım şey. "#EMPTY" oluşturmak için bir işlev kullandıktan sonra "çalışma sayfası hesaplamak" olay altyordamında bazı kod açtı. Tam çözüm için cevabımı kontrol et.
Bay Purple

7

İfadenizin içinde kullanmak COUNTBLANK(B1)>0yerine kullanın .ISBLANK(B1)IF

Aksine ISBLANK(), boş olarak COUNTBLANK()kabul ""edilir ve 1 döndürür.


Ne yazık ki Excel = COUNTBLANK (IFNA (DÜŞEYARA (...), "")) geçersiz (!)
Olarak reddetti

6

LOOKS boş bir değer döndüren ancak istendiği gibi hücre kadar boş olmayan bir çok cevap ...

İstendiği gibi, aslında boş bir hücre döndüren bir formül istiyorsanız. VBA ile mümkündür. İşte tam olarak bunu yapmak için kod. Hücrelerin boş olmasını istediğiniz yere #YOK hatasını döndürmek için bir formül yazarak başlayın. Sonra benim çözüm otomatik olarak # N / A hatası içeren tüm hücreleri temizler. Elbette, istediğiniz herhangi bir şeye dayalı olarak hücrelerin içeriğini otomatik olarak silmek için kodu değiştirebilirsiniz.

"Visual basic viewer" ı açın (Alt + F11) Proje gezgininde ilgilendiğiniz çalışma kitabını bulun ve çift tıklayın (veya sağ tıklayın ve görünüm kodunu seçin). Bu, "kodu görüntüle" penceresini açacaktır. (Genel) açılır menüsünde "Çalışma Kitabı" nı ve (Bildirimler) açılır menüsünde "Sayfa Hesaplaması" nı seçin.

Workbook_SheetCalculate işlevi içine aşağıdaki kodu (JT Grimes tarafından verilen cevaba göre) yapıştırın

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

Dosyanızı makro özellikli bir çalışma kitabı olarak kaydedin

Dikkat: Bu süreç neşter gibidir. #YOK hatasını değerlendiren hücrelerin tüm içeriğini kaldıracaktır, bu yüzden unutmayın. Gidecekler ve içerdikleri formüle yeniden girmeden onları geri alamazsınız.

NB2: Dosyayı açtığınızda makroları etkinleştirmeniz gerekiyor, aksi takdirde çalışmayacak ve #YOK hataları geri alınmayacak


2
Tam otomatik / handsfree / dinamik olması gerekiyorsa ve #NA hatasını oluşturmak için formülü yeniden girmek istemiyorsanız, #NA yerine boş hücreler bırakarak söz konusu sayfayı çoğaltmak için makro kodunu yeniden yazabilirsiniz. yinelenen sayfadan. (Bu yorum hiç kaldırılmadıysa kodu ekleyeceğim).
Bay Purple

4

Bu cevap OP ile tam olarak ilgilenmiyor, ancak birkaç kez benzer bir sorun yaşadım ve cevabı aradım.

Eğer siz yapabilirsiniz yeniden gerekirse formülü veya veri olmak boş hücreleri gerektirir bölümü çalıştırmak için hazır olduğunda, o zaman aslında (ve açıklamasından bu olabildiğince gibi görünen) boşaltın ardından bölge seçebilir ve aşağıdaki vba makrosunu çalıştırın.

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

bu, şu anda gösterilen ""veya yalnızca bir formülü olan herhangi bir hücrenin içeriğini silecek


4

Kullandığım şey küçük bir hack'ti. Boş bir hücre veren T (1) kullandım. T excel'de, eğer bir dize ve boş bir hücre ise argümanını döndüren bir fonksiyondur. Yani, yapabileceğiniz şey:

=IF(condition,T(1),value)

Sıfır uzunluklu bir dize oluşturur (ISBLANK (CELL) = FALSE).
vinh

Bu işe yarıyor ve kabul edilen cevap olmalı. Çok teşekkürler, Ahmed. Kullanım durumum biraz farklı. AVERAGE (), MIN (), MAX (), STDEV (), COUNT () ve MEDIAN () gibi toplama işlevlerinin değerleri göz ardı etmesi için hücreleri boş bırakmak istiyorum.
Charlie Reitzel

2

Excel'imin daha temiz görünmesini sağlamak için aşağıdaki çalışmayı kullandım:

Herhangi bir hesaplama yaptığınızda "" size bir sayı olarak davranmak istediğinizde hata verecektir, bu nedenle "" yerine 0 döndürmek için iç içe bir if ifadesi kullandım ve sonuç 0 ise bu denklem ""

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

Bu şekilde excel sayfası temiz görünecek ...


1
Bu soruna bir çözüm değildir. Sayfa temiz görünüyor, ancak grafikler söz konusu olduğunda "" değeri "boş" değil.
GreenAsJade

1

Verileri çalışma sayfanıza getirmek için HLOOKUP ve VLOOKUP gibi arama işlevlerini kullanıyorsanız, işlevi köşeli parantez içine yerleştirin; işlev, {0} yerine boş bir hücre döndürür. Örneğin,

Arama hücresi boşsa, bu sıfır değerini döndürür:

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

Arama hücresi boşsa, bu boş bir hücre döndürür:

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

Bunun diğer işlevlerle çalışıp çalışmadığını bilmiyorum ... Denemedim. Bunu başarmak için Excel 2007 kullanıyorum.

Düzenle

Bir IF'nin (A1 = "",) doğru olarak geri gelmesini sağlamak için aynı hücrede bir & ile ayrılmış iki arama olması gerekir. Bunun kolay yolu, ikinci aramayı satırın sonunda ve her zaman boş olacak bir hücre yapmaktır.


1

Şimdiye kadar bu benim gelebileceğim en iyisi.

ISBLANKBir IFdeyim içinde hücrenin gerçekten boş olup olmadığını kontrol etmek için işlevi kullanır . Hücrede bir şey varsa, A1bu örnekte bir SPACE karakteri bile varsa, hücre yoktur EMPTYve hesaplama sonuçlanır. Bu, üzerinde çalışacağınız numaralar olana kadar hesaplama hatalarının gösterilmesini engeller.

Hücre ise EMPTY, hesaplama hücresi hesaplamadaki hataları NOT EMPTYgörüntülemez. Hücre ise hesaplama sonuçları görüntülenir. Verileriniz kötüyse, bu korkunç bir hata atar #DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

İhtiyacınız olan hücre referanslarını ve formülü değiştirin.


1
Bu sorun, o zaman bu sonucu kullanarak bu kontrolü diğer tüm hücrelere yaymak zorunda olmasıdır.
guthrie

0

Yanıt olumludur - = IF () işlevini kullanamaz ve hücreyi boş bırakamazsınız. "Boş görünüyor" boş ile aynı değil. İki tırnak işareti arka arkaya formülü silmeden boş bir hücre vermemek utanç verici.


VBA kullanmaya hazırsanız, bunu yapabilirsiniz. Diğer cevaplara göre.
Bay Purple

-1

Google beni buraya çok benzer bir sorunla getirdi, sonunda ihtiyaçlarıma uygun bir çözüm buldum, başka birine de yardımcı olabilir ...

Bu formülü kullandım:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.