Excelの数式から空のセルを返す


218

Excel数式から空のセルを返す必要がありますが、Excelは空の文字列または空のセルへの参照を、実際の空のセルとは異なる方法で処理するようです。だから本質的に私は何かが必要です

=IF(some_condition,EMPTY(),some_value)

私は次のようなことをしようとしました

=IF(some_condition,"",some_value)

そして

=IF(some_condition,,some_value)

B1が空のセルであると仮定

=IF(some_condition,B1,some_value)

しかし、これらはいずれも真の空のセルのようには見えません。それらは式の結果であるためと思います。何らかの条件が満たされ、それ以外の場合はセルを本当に空のままにしておく場合にのみ、セルにデータを入力する方法はありますか?

編集:推奨通り、NA()を返そうとしましたが、私の目的ではこれも機能しませんでした。VBでこれを行う方法はありますか?

編集:データベースにデータをインポートするアプリケーションの非常に特定の要求に合わせてフォーマットされた他のワークシートからデータを取り込むワークシートを構築しています。このアプリケーションの実装を変更するアクセス権がなく、値が実際に空ではなく ""の場合は失敗します。


8
セルを空白にする必要がある理由を説明できますか?「空白」が何をもたらすかに応じて、回避策があるかもしれません。
JTグライムズ、

3
セルには数式が含まれていますね。それでは、それをどのようにして空または空白にすることができますか?
SinanÜnür2009

8
同様の問題があります。グラフを描画していて、グラフ上の空白の項目に値0を表示したくないのですが。レコードが空のセルの場合、グラフから除外されますが、以下の「回答」にリストされているメソッドのいずれかにより、グラフに0が表示されます。:(
Cobusve

5
ゼロがグラフに表示されないようにするには、空の文字列/ゼロの代わりにNA()関数を使用します。これにより、セルに#N / Aが配置されます。これは、グラフ作成ルーチンでは無視されます。
ロブ

5
#N / Aを使用するというRobの提案は、空のセルとは異なる結果になります。#N / Aの場合、グラフルーチンはセルを補間しますが、真に空のセルは行のギャップとして扱われます。ギャップを横切る補間ではなく、行にGAPが必要な場合は、セルを空にする必要があります。質問どおり、#N / Aではありません。要求されたとおりにこれに対処する解決策が以下にあります。
パープル氏

回答:


50

VBA次に、を使用する必要があります。範囲内のセルを反復処理し、条件をテストして、一致する場合は内容を削除します。

何かのようなもの:

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

6
これに追加します。空白のセルをクリアしたい特定の範囲のセルがある場合は、その範囲に名前を付け、SomeRangeをRange( "MyRange")に変更してBoofusの数式を変更できます。セルの名前を設定するには、セルを選択し、リボンの[数式]タブで[名前の定義]をクリックして、[名前]フィールドに「MyRange」と入力します。(そしてもちろん、MyRangeを好きなものに置き換えることができます。)
devuxer '14 / 07/14

31
Excelにnull定数がないことは非常に激しいことです。
ted.strauss 2013年

5
マクロをworksheet_calculate()関数に配置すると、自動的にセルが空になります。具体的な詳細については、以下の私の答えをご覧ください。
パープル氏2014

3
@ ted.straussがありますVbNullString
brettdj 2015年

5
@brettdjこれはExcelではなくVBAです。NULL()やBLANK()などのある種の関数については、長くて難しいことを説明しましたが、役に立ちませんでした。
Jon Peltier

74

Excelにはこれを行う方法がありません。

Excelのセルの数式の結果は、数値、テキスト、論理(ブール)、またはエラーである必要があります。「空」または「空白」の数式セル値タイプはありません。

NA()とISNA()を使用することは、私が見た1つの慣行ですが、NA()が他の関数(SUM(NA( ))は#N / Aですが、A1が空の場合、SUM(A1)は0です)。


19
NA()メソッドは、空のセルをギャップとして表示するように設定されているグラフに対して100%機能します。これには、数式が含まれているためセルを空白にする必要があるアプリケーションにエクスポートする場合は機能しない可能性があります...
Cobusve 2011

4
完璧な解決策はありません。NA()は1つの優れたオプションです。もう1つは、空の文字列(依存する) ''または ""です
Jason

これは、プロットされるデータで動的に空のセルを返す目的で機能するため、グラフのギャップとして空のセルを無視するオプションを効果的に使用できます。私の場合、毎月の進行を表すために12の値をプロットしようとしていましたが、次のような式で前月までしかありません:= IF(MONTH(TODAY())> C2; $ C $ 11 + C7; NA( ))
EKI 2013年

これでうまくいきました。私は毎日追加するデータを含むチャートを持っています-スクラムのバーンダウンチャートで、線が当日までしか伸びていないことを確認したいと思いました。これは私がそれを行うのに役立ちました-IFステートメントでNA()を使用します。ありがとう!
theJerm 2015

12
NA()はギャップになりません。誰もがこれを間違っています。値がNA()または#N / Aの場合、Excelはマーカーをプロットしませんが、隣接する非#N / A値の間で補間された線を描画します。
Jon Peltier

38

はい、可能です。

条件が満たされた場合にtrueblankと評価される消滅式を持つことができます。ISBLANK調合テストに合格しています。

ここに画像の説明を入力してください

名前付き範囲、たとえばを設定するGetTrueBlankだけで、質問と同じように次のパターンを使用できます。

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

手順1.このコードをVBAのモジュールに配置します。

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

ステップ2ではSheet1A1範囲を名前のセルの追加GetTrueBlank次の式で:

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

ここに画像の説明を入力してください

それでおしまい。これ以上の手順はありません。自己消滅式を使用するだけです。B2次の数式をセルに入力します。

=IF(A2=0,GetTrueBlank,A2)

B20を入力すると、上の式はtrueblankと評価されますA2

ここからデモファイルダウンロードできます

上記の例では、数式をtrueblankに評価すると空のセルになります。ISBLANK数式で結果を確認すると、結果はTRUEになります。これは原切のような調合です。条件が満たされると、数式がセルから消えます。目標は達成されましたが、おそらく数式が消えないようにする必要があるかもしれません。

隣接するセルに結果を返すように数式を変更して、数式が強制終了しないようにすることができます。隣接するセルでUDF結果を取得する方法をご覧ください

ここで、The FrankensTeamによって明らかにされた数式の結果としてtrueblankを取得する例に出くわしました:https ://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- 細胞


5
セルを物理的に空にせずにこれを行う方法がないことはかなりおかしいですが、これはすばらしい回避策です。ここでの唯一の欠点は、再計算するときに数式を再度下にドラッグすることを覚えておかなければならないことです。
Some_Guy 2017年

最適な回避策を使用する前に、逆効果になる可能性があることに注意してください。
-GSerg

@GSergあなたは無限に行くVBAでループを作ることができ、このようにプログラムがハングすることを言っているだけですか?VBAは、猿の手のかみそりかもしれません。そして、ライオンも撃ったという噂があります。それはもっと怖いはずです:-)
Przemyslaw Remin

@PrzemyslawReminいいえ、Excelのクラッシュなど、さまざまなランダムなことが発生する可能性があると言っています
GSerg

20

多分これは不正行為ですが、うまくいきます!

また、グラフのソースとなるテーブルも必要でした。また、空白またはゼロのセルがグラフ上のポイントを生成することを望んでいません。グラフプロパティを設定し、データを選択し、非表示のセルと空のセルを「ギャップとして空のセルを表示」する(ラジオボタンをクリックする)必要があるのは事実です。それが最初のステップです。

次に、プロットしたくない結果になる可能性のあるセルに、次のような結果を含むIFステートメントに数式を入力しNA()ます。=IF($A8>TODAY(),NA(), *formula to be plotted*)

これにより、無効なセル値が発生したときに、ポイントのない必要なグラフが得られます。もちろん、これはすべてのセルにその無効な値を読み取るために残し#N/A、それは面倒です。

これをクリーンアップするには、無効な値が含まれている可能性のあるセルを選択してから、条件付き書式 -新しいルールを選択します。「含むセルのみのフォーマット」を選択し、ルールの説明の下でドロップダウンボックスから「エラー」を選択します。次に、フォーマットの下で、フォント-色-白(または背景色が何であれ)を選択します。さまざまなボタンをクリックすると、無効なデータが含まれるセルが空白になっていることがわかります(実際には含まれて#N/Aいますが、白い背景に白いテキストが空白になっています)。リンクされたグラフにも無効な値のポイントは表示されません。


6
番号!!!「空のセルをギャップとして表示」セルが空である必要があります。NOTHINGではなく#N / Aが含まれている場合、グラフ作成ルーチンは#N / Aセルをラインのギャップとして残すのではなく、補間します。#N / Aセルを補間したい場合は問題ありませんが、その場合は「空のセルをギャップとして表示」は適用されません
Mr Purple

4
@GreenAsJade OPのニーズに合わないため、これは本当の答えではありません。グラフ化の問題については、別の質問があるはずです。
ZX9 2015

10

これは、使用していたデータセットに対して行った方法です。複雑で馬鹿げているように見えますが、上記のVBソリューションの使用方法を学ぶ唯一の方法でした。

  1. すべてのデータを「コピー」し、データを「値」として貼り付けました。
  2. 次に、貼り付けたデータを強調表示して、空のセルを文字で「置換」(Ctrl- H)しましたq。これは、データシートのどこにもないため、選択しました。
  3. 最後に、私は別の「置換」を行いq、何も置換しませんでした。

この3ステップのプロセスにより、すべての「空の」セルが「空白の」セルに変わりました。空白のセルを空白のセルに置き換えるだけで、手順2と3をマージしようとしましたが、うまくいきませんでした。空白のセルを実際のテキストで置き換え、そのテキストを空白のセルに置き換えます。


これはあなたのケースでうまくいったかもしれませんが、自動的に適用できる解決策が必要でした。最終的には、VBマクロを使用して、空であると判断されたものを消去したと思います。このマクロは、ファイルを保存する直前に実行されました。
ブライアンワード

4
自動である必要はないので、これは私にとって最良でしたが、迅速である必要があります。基本的に、Excelは検索と置換を介して追加された空白の値を尊重することを意味します。これで十分です。
rickcnagy 2014

10

実際に値がゼロのときにセルを空として表示できるようにすることが目標である場合は、代わりに空白または空のセルになるempty()関数を使用する代わりに(関数がないため)、

  • 空白のセルが必要な場所では、0代わりに""andを返します

  • セルの数値形式を次のように設定します。ここで、正と負の数値(セミコロンで区切られた最初の2つの項目)に必要なものを考え出す必要があります。私の場合、私が持っていた数は0、1、2 ...で、0が空で表示されるようにしたかったのです。(私はテキストパラメータが何のために使用されているのか理解できませんでしたが、それは必須のようでした)。

    0;0;"";"text"@
    

4
これによってセルが空になることはありませんが(数式が空のセルになる方法はありません)、数値がゼロの場合は空に見えます。しかし、それは正しくありません。0; -0; ""(マイナス記号に注意)または0; -0;である必要があります。引用符なしで。3番目のセミコロンと「text」@の部分は不要です。セミコロンで区切られたフィールドの意味は、正の数、負の数、ゼロ、およびテキストを表示する方法です(後者の形式には@が含まれている必要があります)。 office.microsoft.com/en-gb/excel-help/...
cvoinescu

あなたは神様です。Visual Basicから私を救った。あなたが支配する
CommaToast

7

を使用してセルを評価してみてくださいLEN。数式LENが含まれている場合はが返され0ます。テキストが含まれている場合は、より大きい値を返します0


これは元の質問者には役立ちませんが、多くの場合、これは実際には悪い答えではありません。これは、 ""を強制的に返す必要がある場合に適しています。
Technium 2012

すばらしい答えですが、少し混乱します。テストするセルが数値を返すか、""または空です。LEN(cell)>0数値(ゼロを含み、数値が数式で計算された場合も含む)がある場合はtrueを返し、空の文字列または空の場合はfalseを返します。
Chris

7

うわー、驚くほど多くの人が質問を誤解しています。セル空に見せるのは簡単です。問題は、セルを空にする必要がある場合、Excel数式は「値なし」を返すことができず、値のみを返すことができることです。ゼロ、スペース、または ""を返すのは値です。

したがって、「魔法の値」を返し、それを値のないものに、検索と置換、またはVBAスクリプトを使用して置き換える必要があります。スペースまたは「」を使用することもできますが、私のアドバイスは、「NODATE」、「NONUMBER」、「XXXXX」などの明白な値を使用して、それがどこで発生するかを簡単に確認できるようにすることです。「」を見つけるのはかなり困難です。スプレッドシートで。


1
うんそれは私がやったことです。関数を使用して「#EMPTY」を生成し、「ワークシート計算」イベントサブルーチンにコードをポップしました。完全な解決策については私の答えを確認してください。
パープル氏2013年

7

ステートメント内ではCOUNTBLANK(B1)>0なく使用しISBLANK(B1)IFください。

とは異なりISBLANK()、空とCOUNTBLANK()見なし""て1を返します。


残念ながら、Excelは= COUNTBLANK(IFNA(VLOOKUP(...)、 ""))を無効(!)として拒否しているようです
NetMage

6

空に見えても実際には空のセルではない値を要求に応じて返す非常に多くの回答...

空のセルを返す数式が実際に必要な場合。VBAを通じて可能です。だから、これはまさにそれを行うコードです。まず、セルを空にしたい場所に#N / Aエラーを返す式を記述します。次に、私の解決策は、その#N / Aエラーを含むすべてのセルを自動的にクリアします。もちろん、コードを変更して、好きなものに基づいてセルの内容を自動的に削除することもできます。

「Visual Basic Viewer」(Alt + F11)を開きます。プロジェクトエクスプローラーで目的のワークブックを見つけ、ダブルクリックします(または右クリックしてビューコードを選択します)。「コードの表示」ウィンドウが開きます。(全般)ドロップダウンメニューで[ワークブック]を選択し、(宣言)ドロップダウンメニューで[SheetCalculate]を選択します。

次のコード(JT Grimesの回答に基づく)をWorkbook_SheetCalculate関数内に貼り付けます

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

ファイルをマクロ対応のブックとして保存する

注意:このプロセスはメスのようなものです。#N / Aエラーと評価されたセルの内容全体が削除されるため、注意してください。それらは行き、あなたはそれらが含んでいた式を再入力せずにそれらを取り戻すことはできません。

NB2:当然、ファイルを開くときにマクロを有効にする必要があります。そうしないと機能せず、#N / Aエラーは削除されずに残ります。


2
完全自動/ハンズフリー/ダイナミックにする必要があり、数式を再入力して#NAエラーを生成したくない場合は、マクロコードを書き直して問題のシートを複製し、#NAの代わりに空のセルを残してグラフを生成できます。複製シートから。(このコメントが賛成された場合は、コードを追加します)。
パープル氏

4

この回答はOPを完全には扱っていませんが、同じような問題を抱えて回答を検索したことが何度かあります。

場合あなたがすることができ、再作成必要に応じて、式やデータを(とすることができますかのようにあなたの説明から、それは見えます)あなたは空白のセルが実際にあることを必要とする部分を実行する準備ができているとき、そして空を、あなたは地域を選択することができますし、次のvbaマクロを実行します。

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

これにより、現在表示され""ている、または数式のみを含むセルの内容が消去されます


4

私が使ったのは小さなハックでした。空のセルを返すT(1)を使用しました。Tは、文字列の場合は引数を返し、それ以外の場合は空のセルを返すExcelの関数です。だから、あなたができることは:

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

長さがゼロの文字列を作成します(ISBLANK(CELL)= FALSE)。
vinh

これは機能し、受け入れられる答えになるはずです。ありがとう、アーメド。私の使用例は少し異なります。セルを空のままにして、AVERAGE()、MIN()、MAX()、STDEV()、COUNT()、MEDIAN()などの集計関数が値を無視するようにします。
チャーリーReitzel

2

私は次の回避策を使用して、Excelをきれいに見せました。

計算を行うと、「」はエラーになるため、数値として扱いたいので、ネストされたifステートメントを使用して「」ではなく0を返し、結果が0の場合、この方程式は「」を返します。

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

このようにして、Excelシートはきれいに見えます...


1
これは問題の解決策ではありません。シートはきれいに見えますが、グラフに関する限り、値「」は「空」ではありません。
GreenAsJade 2014年

1

HLOOKUPやVLOOKUPなどのルックアップ関数を使用してデータをワークシートに取り込む場合、関数を角かっこ内に配置すると、関数は{0}ではなく空のセルを返します。例えば、

ルックアップセルが空の場合、これはゼロ値を返します。

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

これは、ルックアップセルが空の場合、空のセルを返します。

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

これが他の機能で動作するかどうかわかりません...私は試していません。私はこれを達成するためにExcel 2007を使用しています。

編集する

IF(A1 = ""、、)を実際にtrueに戻すには、同じセル内に&で区切られた2つのルックアップが必要です。これを回避する簡単な方法は、2番目のルックアップを行の最後にあり、常に空になるセルにすることです。


1

これまでのところ、これは私が思いつくことができる最高のものです。

ISBLANK関数を使用して、IFステートメント内でセルが本当に空であるかどうかをチェックします。セルに何かがある場合(A1この例では、スペース文字も)、セルは存在せずEMPTY、計算が行われます。これにより、処理する数値が得られるまで計算エラーが表示されなくなります。

セルがそうである場合、EMPTY計算セルは計算からのエラーを表示しません。セルがそうである場合NOT EMPTY、計算結果が表示されます。データが悪い場合、これはエラーをスローします、恐ろしい#DIV/0

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

必要に応じて、セル参照と数式を変更します。


1
これの問題は、この結果を使用して、このチェックを他のすべてのセルに伝播する必要があることです。
ガスリー2013年

0

答えは肯定的です-= IF()関数を使用してセルを空のままにすることはできません。「空に見える」は空と同じではありません。2つの引用符が連続していて、数式を消去せずに空のセルを生成しないのは残念です。


VBAを使用する準備ができている場合は、使用できます。他のいくつかの回答に従って。
パープル氏2016

-1

グーグルは非常に似た問題で私をここに連れてきました、私は最終的に私のニーズに合う解決策を見つけました、それは他の誰かを助けるかもしれません...

私はこの式を使いました:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.