web-dev-qa-db-ja.com

0を返すExcel式を使用し、結果を空白にします

繰り返し発生するExcelの問題は、INDEX(array,row,column)などの数式で、結果が返されない場合に空白を返すのではなく0を返します。

ゼロの結果を空白に変更する最良の方法は何ですか?

これまでに試したアプローチは次のとおりです。

1)ゼロ除算を使用します。 INDEXが0を返す場合、エラーを引き起こし、それを除外します。

=IFERROR(1/1/INDEX(A,B,C),"")

短所:数式を乱雑にし、見たいエラーを隠します。

2)カスタムフォーマットを使用する

0;-0;;@

短所:
1)日付形式を同時に適用できません
2)空白セルのチェックに関しては、条件付き書式設定では機能しません(値が0のままであるため、表示されません)。

3)Using IFステートメント

=IF((1/1/INDEX(A,B,C))<>"",(1/1/INDEX(A,B,C)),"")

短所:乱雑な繰り返し

他の/より良いアイデアはありますか?

12
WoodenKitty

Excel内のモジュールにownユーザー定義関数を作成できます(メモリから、デバッグが必要な場合があり、構文はExcelのバージョンによって異なる場合があります)。

_Public Function ZeroToBlank (x As Integer) As String
    If x = 0 then
        ZeroToBlank = ""
    Else
        ZeroToBlank = CStr(x)
    End If
End Function
_

その後、単に=ZeroToBlank (Index (a,b,c))をセルに挿入できます。

このテーマについてのすてきなチュートリアルがあります こちら

基本的な手順は次のとおりです。

  • _Tools -> Macro -> Visual Basic Editor_を使用して、Excel内でVBエディターを開きます。
  • _Insert -> Module_を使用して新しいモジュールを作成します。
  • 上記の関数をそのモジュールに入力します。
  • その関数を呼び出すセルに、式を入力します
    =ZeroToBlank (<<whatever>>)
    ここで_<<whatever>>_は、ゼロの場合に空白を使用する値です。
  • この関数は文字列を返すため、数値のようにlookにしたい場合は、セルを右揃えすることをお勧めします。

使用しているExcelのバージョンに応じて、わずかな違いがあることに注意してください。 Excelのバージョンは2002年ですが、確かにかなり古いですが、それでも必要なことはすべて実行できます。

9
paxdiablo

あなたの例よりも簡単ですが、通常の方法はIF文です:

=IF(INDEX(a,b,c),INDEX(a,b,c),"")

ゼロの値は偽条件をトリガーするため、式で回転を行う必要はありません。

6
Lance Roberts

おそらく最も簡単な方法は、_?_修飾子を使用して、テキストの書式設定条件を数式に追加することです。したがって:

_(formula to grab values)_は次のようになります。

text((formula to grab values),"?")

お役に立てば幸いです。

4
jsgeare

すべてのタイプのデータで機能するかどうかはわかりませんが、現時点で見つかった唯一の解決策は、インデックスが空白を返すかどうかをテストすることです:

=IF(ISBLANK(INDEX(a,b,c)),"",INDEX(a,b,c))

=IF(INDEX(a,b,c),INDEX(a,b,c),"")

テキストでは機能しません

4
Gutti

ワークシートのすべてのゼロを非表示にする場合は、「Excelオプション」、「詳細」ページ、「このワークシートのオプションを表示」セクションに移動し、「値がゼロのセルにゼロを表示」をクリアします」チェックボックス。 (これはExcel 2007; YMMVのナビゲーションです。)

答え(2)については、0;-0;と入力することで、キーストロークをいくつか保存できます。私が知る限り、これは0;-0;;@と同等です。逆に、もう少し一般的になりたい場合は、General;-General;という形式を使用できます。いいえ、それは自動的に日付を処理しませんが、バリーが指摘するように、あなたがexpecting日付値であれば、d-mmm-yyyy;;のようなフォーマットを使用できます。

2
Scott

この厄介な問題に対する非常に簡単な答え、つまりSUBSTITUTE関数があります。上記の例では:

=IF((1/1/INDEX(A,B,C))<>"",(1/1/INDEX(A,B,C)),"")

次のように書き換えることができます。

=SUBSTITUTE((1/1/INDEX(A,B,C), " ", "")
1
PamB
=if(b2 = "", "", b2)

これは私のために働いた

1

問題は、なぜ今のように振る舞うのと異なるようにしたいのでしょうか?独自のエンベロープ関数またはVBAでの代替関数(大規模ファイルでの計算速度の低下を引き起こす可能性があります)を別にして、さまざまな問題に対する単一の解決策がない場合があります。

フォローアップ式はほとんどの場合、空白をフェイルオーバーするため、IFERROR()でキャプチャするエラーまたはIF(sourcecell<>"";...)で防止するエラーが発生します。後者を使用する場合、ゼロのテストは同じ量の作業と混乱。空白セルのチェックは、値が0のセルのチェックになります。 (この問題が解決しない場合は、問題の詳細を説明してください)。

審美的な目的のために、カスタム書式設定ソリューションはうまくいくでしょう。

チャートの場合、実際の元の式にそれを適用することで解決される問題があるかもしれません。

1
K_B

EMPTY文字列を連結することで、それを理解しました。

INDEX(tt_Attributes,MATCH([RowID],tt_Attributes[RowID],0),COLUMN(tt_Attributes[Long Description]) ) & ""
1
Jiping Wang

上記のどれも今日はうまくいきませんでしたので、次の例に示すように、0を引用符で囲んでみました。

例:= IF(INDEX(a、b、c)= "0"、 ""、INDEX(a、b、c))

0
John Little

最後に空の文字列を追加するだけです。 Excelにその内容を強制的に表示させます。

例えば:

=IFERROR(1/1/INDEX(A,B,C) & "","")
0
Ramon

条件付き書式設定([ホーム]タブ、スタイルセクション)を使用して、セルの強調表示ルールを適用します([等しいセルの書式設定]ボックスに0を入力)が、カスタム書式を選択してから[数値]タブを選択します。 [Category custom]を選択し、タイプボックスに以下を入力します。

0; -0 ;; @

複雑に聞こえますが、実際は簡単です。

これにより、セルは空に見えますが、0が基になる値であるという利点が得られるため、そのセル/選択に対して使用する数式は、数値として表示され、IFステートメントのチェーンをいじり回すことを節約できます。

0
travel_kat