いくつかの個別のワークシートを含むExcel 2010ブックを持っています。いずれかのシートのセルは、同じブック内の他の2つのワークシートの個々のセルにリンクされています。私は基本的に1つのシートの特定のセルに入力されたどんな値でも2つの他のシートのセルを生成すると言う直接セル参照を使っています。これを実現するために、セル参照で(=)関数を使用しました。
私が遭遇している問題は、一次セルが空白のままであっても、その一次セルから移入されるセルはそれ自身空白のままではなく0を表示するということです。
リンク先のプライマリセルが空白の場合は、下位のセルを空白のままにします。
セルの内容を数値ではなくテキスト値として処理するようにExcelに強制する必要があります。数値は空白値で自動的に処理されます。
=A2 & ""
これにより、Excelは強制的にそのセルをテキスト値に参照させ、空白のゼロへの変換を防ぎます。
これが3つの答えです。
1)other.cell.referenceが=
の後に現在ある参照式を表すように(例:Sheet17!$H$42
)、そのリンク参照を次のように置き換えます。
=IF(
other.cell.reference<>"",
other.cell.reference, "")
2)リンクされたセルの「番号」フォーマットを「カスタム」に設定します:General;–General;
。
3)[Excelのオプション]、[詳細設定]ページ、[このワークシートの表示オプション]セクションで、[ゼロ値を持つセルにゼロを表示する]チェックボックスをオフにします。警告:これにより、ワークシートのすべてのゼロが消えます。
参照データが数値型(テキスト以外)または空のいずれかで、0がある場合は、数式を1回だけ入力することをお勧めします。確かに、多少間接的な方法ですが、それが私が考えるので最もよいです:
ダウンフォール:テキストデータが必要な場合、これは機能しません。テキストデータのために私の好ましい方法は上の他の答えで述べたように数のフォーマットを使うことです。
=IFERROR((A1 & "") * 1,"")
この場合のA1は、別のシート、ブック、またはINDIRECT()を含む任意のセルに置き換えることができます。
これがどのように機能するかについての注意:
IFERROR() - 2番目の引数は空の文字列に設定されているので、エラーが発生すると空の文字列が返されます。そのため、ソースセルが空かどうかを確認する必要があり、エラーが発生します。
数値法:ソース値を文字列化し、1で乗算します。リテラルの空の文字列* 1 = #VALUE、数値の文字列は数値に自動変換され、エラーは発生しません。
もう1つのトリックがあります。ソースの空のセルを式=""
に設定することです。ここで 詳細な説明を参照してください。
私もスコットのものより良い解決策を見つけられませんでした。
しかし、ここからのアプローチと組み合わせると、それは非常に耐えられるものになる可能性があります。
http://www.ozgrid.com/Excel/named-formulas.htm
私はこのような式があるとしましょう
= IFERROR( INDEX(INDIRECT("EsZkouska");
SMALL(IF((INDEX(INDIRECT("EsZkouska");;1;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")
この式は、条件付き選択を使用してデータシートからセル値を読み取り、それらを別のシートに表示します。データシート上のセルの書式設定は制御できません。
[挿入]> [名前]> [定義]に移動し、[ワークブック内の名前]で新しい名前 "RC_P_B"を作成します。それから "参照先"フィールドに私は自分の式をコピーします({}文字なしで - それは配列式です)。
それなら、式のテキスト全体を繰り返さなくても、Scottの式を使用することができます。
{=IF(RC_P_B<>""; RC_P_B;"---")}
これは式全体をコピーするよりも優れていると思います。
私は簡単にこの問題を克服するために公式を使わないでください。セルの値が0の場合は、セルを条件付きでフォントの色を白にフォーマットするだけです。
Excel 2010用のソリューション:
リンクされたセルが数値以外の場合は、ISTEXTを指定したIFステートメントを使用できます。
=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")
私は長い間この問題に対する優雅な解決策を探してきました。
私は何年もformula = if(a2 = ""、 ""、a2)を使ってきましたが、少し面倒なことがわかりました。
私は上の提案= a2& ""を試みました、そしてそれはうまくいくように見えますが、それは実際にテキストである数表示を適用することができずあなたがこれを探している数は法案に合いません。
私は他の機能のいくつかを試してみて、私が今までで最も洗練された解決策であると思うものを見つけました。上記の例を続けます。
= CELL( "コンテンツ"、A2)
数値としてフォーマット設定できる数値を返し、参照先のセルが空白の場合は空白を返します。何らかの理由で、この解決策は私が見つけたオンラインの提案のどれにも現れていないようですが、それはそれです
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String
Dim Result As Variant
If IsEmpty(MyCell) Then
FuncDisplayStringNoValue = "No Value"
Else
Result = CDec(MyCell)
Result = Round(Result, 2)
FuncDisplayStringNoValue = "" & Result
End If
End Function
セル値がゼロに等しいセルの背景と同じ色になるようにフォントをフォーマットするために、条件付きフォーマットを使用しました。