ワークシートに数式があり、数式で参照されているセルが空白の場合でも、数式はゼロ値を返します。たとえば、数式= A3の場合、セルA3が空白でない限り、数式はセルA3の内容を返します。その場合、数式はゼロの値を返します。

これは、「空白」が「空」と同義語として使用されている場合、数式が空白の値を返すことは不可能であるという考えに関連しているようです。

ただし、数式を少し拡張して、空の文字列を返すようにすることはできます。式として= A3を使用する代わりに、次を使用します。

=IF(ISBLANK(A3),"",A3)

この数式はISBLANKを使用します。これは、参照されるセル(A3)が空白であるかどうかに応じて、TrueまたはFalseを返します。次に、IF関数は、A3が空白の場合は空の文字列( “”)を返し、A3が空白でない場合はA3の値を使用します。

数式が何を返すかに関係なく、その結果を他の数式で使用することができ、正常に機能します。空の文字列を返したとしても、他の数式ではゼロが含まれているかのように扱われます。

セルをゼロが含まれているように扱うことが問題になる可能性がある領域(数式の結果をグラフ化する場合など)では、次に示すように、数式を少し変更できます。

=IF(ISBLANK(A3),NA(),A3)

この式は、A3が空白の場合、#N / Aエラーを返します。このエラーは、数式を参照する他の数式を介して伝播しますが、グラフ化する場合、#N / Aエラーは完全に無視されます。

上記の解決策はほとんどの人にとって満足のいくものですが、ソースセルが空白の場合、ターゲットセルが本当に空白になることを本当に望んでいる人もいます。たとえば、セルA3が空白の場合、セルB7を空白にすることができます。セルB7に数式を入力した場合(すでに説明したように)、セルB7は真に空白ではなく、数式が含まれています。

これがあなたの目標である場合、つまり真の「空白」である場合は、マクロを使用することによってのみそれを達成できます。マクロは、ソースセルが変更されたかどうかを確認する必要があります。そうであった場合は、ソースにあるものはすべてターゲットセルにコピーする必要があります。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rMonitor As Range     Dim rTarget As Range

Set rMonitor = Range("A3")

Set rTarget = Range("B7")



If Not Intersect(Target, rMonitor) Is Nothing Then         rMonitor.Copy rTarget     End If

Set rMonitor = Nothing     Set rTarget = Nothing End Sub

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(10105)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: