12

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

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

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

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

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

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

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

0;-0;;@

短所:
1)日付形式を同時に適用できない
2)空白セルのチェックに関しては、条件付き形式では機能しません(値はまだゼロであり、表示されていません)

3)IFステートメントの使用

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

短所:厄介な繰り返し

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

4

14 に答える 14

9

次のようなExcel内のモジュールで独自のユーザー定義関数を作成できます(メモリから、デバッグが必要な場合があり、構文も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))その後、セルに挿入するだけです。

このテーマに関する素晴らしいチュートリアルがここにあります。

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

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

お使いのExcelのバージョンによっては、若干の違いがある場合がありますのでご注意ください。私のバージョンのExcelは2002年で、確かにかなり古いものですが、それでも必要なことはすべて実行できます。

于 2013-03-06T05:24:08.760 に答える
6

通常の方法はIFステートメントですが、例よりも単純です。

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

ゼロ値は誤った条件をトリガーするため、数式を使用して回転を行う必要はありません。

于 2013-03-06T05:38:21.483 に答える
4

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

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

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

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

于 2014-02-06T09:50:23.537 に答える
4

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

(formula to grab values)になります:

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

お役に立てば幸いです。

于 2014-03-18T01:44:02.920 に答える
2

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

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

于 2013-03-13T23:58:07.423 に答える
1

問題は、なぜ現在とは異なる動作をしたいのかということかもしれません。独自のエンベロープ関数または代替関数をVBAで作成することを除けば(大きなファイルでは計算速度が低下する可能性があります)、さまざまな問題に対する単一の解決策がない場合があります。

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

審美的な目的のために、カスタムフォーマットソリューションは問題ありません。

チャートの場合、問題が発生する可能性があります。これは、元の式に実際に適用することで解決されます。

于 2013-03-14T12:11:25.937 に答える
1

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

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

次のように書き直すことができます。

=SUBSTITUTE((1/1/INDEX(A,B,C), " ", "")
于 2015-09-22T16:20:10.323 に答える
1

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

INDEX(tt_Attributes,MATCH([RowID],tt_Attributes[RowID],0),COLUMN(tt_Attributes[Long Description]) ) & ""
于 2015-11-05T15:11:36.540 に答える
1
=if(b2 = "", "", b2)

これは私のために働いた

于 2015-11-26T11:51:06.737 に答える
0

条件付き書式([ホーム]タブ、[スタイル]セクション)を使用し、ハイライトセルルールを適用します(ボックスに等しい書式セルに0を入力)が、カスタム書式を選択してから[数値]タブを選択します。[カテゴリカスタム]を選択し、タイプボックスに次のように入力します。

0; -0 ;; @

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

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

于 2016-06-09T02:28:18.367 に答える
0

今日は上記のどれもうまくいかなかったので、以下の例に示すように、0を引用符で囲んでみました。

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

于 2016-12-01T22:16:28.850 に答える
0

最後に空の文字列を追加するだけです。それはExcelにそれが何であるかを見るように強制します。

例えば:

=IFERROR(1/1/INDEX(A,B,C) & "","")
于 2018-07-18T18:49:20.630 に答える
0

最近この問題に気づき、Excelが空白の文字列を0に変更するのはイライラします。複雑な数式にロジックを追加するのは面倒で、元の数式を壊してしまう可能性があるため、数式でこの問題を解決できるとは思いません。 。以下に2つの非数式オプションがあります。

数式をセルに保持し、 ""ではなく0を返すようにする場合は、次のクリックパスを使用します。

  1. ファイル
  2. オプション
  3. 高度

[このワークシートのオプションを表示する]までスクロールします。

  1. [値がゼロのセルにゼロを表示する]の選択を解除します

また、(数式ではなく)値を0から空白の文字列に変更する場合は、簡単な手動の解決策を示したいと思います。このソリューションは、101のような数値を11に置き換えないため、検索と置換よりも優れています。

  1. すべてのデータを選択します
  2. [データ]タブで、フィルターのロゴをクリックします

フィルタロゴ自体

  1. 不要な0の列の選択リストをクリックして、値が「0」の行のみを選択します(正確な値が0の内容を含むセルの内容のみをクリアするようにしてください!)

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

  1. データ(0のみ)を選択し、右クリックしてクリアコンテンツを選択します

フィルタを適切に使用した場合、他のデータは残り、問題が発生した場合は戻るボタンが常に表示されます。オプション2は非常に手動で「不法」であることを理解していますが、0を空白の文字列に正常に変換し、ifステートメントを使用したくない欲求不満の個人を軽減する可能性があります。

私は今日、この(非常に乾燥した)Excelの問題を調査することを個人的に学び、これらの方法を個人的に使用しています。オプション2のクイックマクロは、これが中級のExcelユーザーにとって頻繁なタスクである場合に適したオプションです。

于 2020-07-02T05:50:55.417 に答える
-1

=IF(INDEX(a,b,c)="0","", INDEX(a,b,c))マイナーな変更で私のために働いた。引用符の間に0とスペースなしを除く: =IF(INDEX(a,b,c)="","", INDEX(a,b,c))

于 2017-05-05T15:10:14.127 に答える