web-dev-qa-db-ja.com

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

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でこれを行う方法はありますか?

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

197
Bryan Ward

それならVBAを使わなければなりません。範囲内のセルを繰り返し処理し、条件をテストして、一致する場合は内容を削除します。

何かのようなもの:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next
46
J.T. Grimes

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

Excelのセル内の数式の結果は、数値、テキスト、論理値(ブール値)、またはエラーでなければなりません。 "空"または "空白"の数式セル値型はありません。

私が従ったのは、NA()とISNA()を使うことですが、NA()が他の関数によって扱われる方法には大きな違いがあるので、これはあなたの問題を本当に解決するかもしれません。 A1)が空の場合、SUM)(A1)は0ですが))は#N/Aです。

68
Joe Erickson

はい、可能です。

条件が満たされれば、消滅する式をtrueblankと評価することが可能です。 ISBLANK式のテストに合格します。

3つのステップを設定した後、あなたはあなたの答えで望むように、名前付き範囲GetTrueBlankを使うことができるでしょう:

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

Step 1.このコードをModule of VBAに入れてください。

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

Step 2.Sheet1セルのA1に、以下の式でrange GetTrueBlankという名前を追加します。

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

enter image description here

Step 3.自己消滅式を使う。セルに入れる、B2、次の式を言う:

=IF(A2=0,GetTrueBlank,A2)

enter image description here

B2に0を入力すると、A2の上記の式はtrueblankに評価されます。

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

上記の例では、formulaをtrueblankと評価すると、空のセルができます。 ISBLANKの式で結果をチェックすると、肯定的にTRUEになります。これはハラキリみたいな式です。条件が満たされると、数式はセルから消えます。あなたはおそらく式が消えないようにしたいと思うかもしれませんが、目標は達成されました。

式が自分自身を殺さないように、隣接するセルに結果を返すように式を変更することができます。 隣接セルでUDFの結果を取得する方法を参照してください

私はここでFrankensTeamによって明らかにされた式の結果としてトゥルーブランクを取得する例に出くわしました: https://sites.google.com/site/e90e50/Excel-formula-to-change-the-value-of-他セル

27

たぶんこれは不正だが、それはうまくいきます!

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

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

これは、無効なセル値が発生したときに必要なグラフに点がないことを示します。もちろん、これは#N/Aを読むためにその無効な値を持つすべてのセルを残します、そしてそれは面倒です。

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

18
Gentle Knight

これが私が使っていたデータセットのためのやり方です。これは複雑で愚かなようですが、上記のVBソリューションの使い方を学ぶための唯一の代替策でした。

  1. すべてのデータを「コピー」し、そのデータを「値」として貼り付けました。
  2. それから私は貼り付けたデータをハイライトして「置き換え」(Ctrl - Hそれが私のデータシートのどこにもなかったので)私はqを選んだ。
  3. 最後に、私は別の "replace"を行い、qを何も置き換えませんでした。

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

10
jeramy

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

  • 空白のセルが必要な場合は、0およびTHENの代わりに""を返します。

  • セルの数値フォーマットをこのように設定します。ここで、正数と負数に必要なもの(セミコロンで区切られた最初の2つの項目)を思いつく必要があります。私の場合、私が持っていた数は0、1、2 ...でした、そして私は0が空で表示されることを望みました。 (textパラメータが何のために使用されているのかはわかりませんでしたが、必須のようでした)。

    0;0;"";"text"@
    
8
ET-X

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

6
Dan Lock

IFステートメント内では、COUNTBLANK(B1)>0の代わりにISBLANK(B1)を使用してください。

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

6

うわー、驚くべき数の人々が質問を誤解しました。セルを 外観 空にするのは簡単です。問題は、セルを空にする必要がある場合、Excelの数式では「値なし」が返されず、値しか返されないことです。ゼロ、スペース、さらに ""を返すことは値です。

したがって、「魔法の値」を返してから、検索と置換、またはVBAスクリプトを使用して、それを値なしで置き換える必要があります。スペースや ""を使用することはできますが、 "NODATE"、 "NONUMBER"、 "XXXXX"などの明白な値を使用することをお勧めします。スプレッドシートで。

6
Laird Popkin

空のように見えるが実際には要求されたセルのように空ではないという値を返す多くの答え...

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

「ビジュアルベーシックビューア」を開く(Alt + F11)プロジェクトエクスプローラで目的のワークブックを見つけてダブルクリックします(または右クリックしてビューコードを選択します)。これにより、「コードの表示」ウィンドウが開きます。 (一般)ドロップダウンメニューで[ワークブック]を選択し、(宣言)ドロップダウンメニューで[シート計算]を選択します。

Workbook_SheetCalculate関数内に次のコードを貼り付けます(J.T. Grimesによる回答に基づく)。

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

ファイルをマクロ有効ブックとして保存する

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

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

6
Mr Purple

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

の場合 必要に応じて 式またはデータを再作成できます(説明からは可能な場合があります)。空白のセルが実際に empty であることを必要とする部分を実行してから、領域を選択して次の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
ElderDelp

私のExcelをきれいに見せるために、私は以下の回避策を使用しました。

あなたが計算をするとき ""はあなたにエラーを与えるのであなたはそれを数として扱いたいので私は0を返すためにネストされたif文を使いました "そしてその結果が0なら" "

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

これにより、Excelシートはきれいに見えます。

2
Big Z

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

これはISBLANK関数を使用して、セルがIFステートメント内で本当に空かどうかを確認します。セル内に何か、この例ではA1があっても、たとえSPACE文字であっても、そのセルはEMPTYではなく、計算結果になります。これにより、使用する数値が得られるまで計算エラーが表示されなくなります。

セルがEMPTYの場合、計算セルは計算からのエラーを表示しません。セルがNOT EMPTYの場合、計算結果は表示されます。あなたのデータが悪ければ、これはエラーを投げます、恐ろしい#DIV/0

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

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

1
Stevis Geekus

HLOOKUPやVLOOKUPなどのルックアップ関数を使用してデータをワークシートに入れる場合は、関数を角括弧で囲むと、関数は{0}ではなく空のセルを返します。例えば、

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

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

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

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

これが他の機能と一緒に機能するかどうかはわかりません...試していません。これを実現するためにExcel 2007を使用しています。

編集する

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

1
Matthew Dolman

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

0
Ken

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

=IF(condition,T(1),value)
0
Ahmed Shahid