ブックの中に、特定のワークシートが存在するかどうかを調べるには、どうしたらいいでしょう。この手の判定は、マクロを使えば簡単です。たとえば、次のようなコードです。
Sub Sample1()
Dim i As Long
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "横浜" Then
MsgBox "[横浜]シートは存在します"
Exit For
End If
Next i
End Sub

これを、関数でやってみましょう。マクロを使わずに[横浜]シートが存在するかどうかを判定します。

あるシート(ここではSheet1)から、別のセルを参照するには
=シート名!セルのアドレス
とします。

[東京]というシート名がA列に入力されていますので、それを参照するようにしましょう。こんなときには、INDIRECT関数を使います。

INDIRECT関数の解説は、下記のページをご覧ください。
もちろん、存在しないワークシートを指定すると、参照式はエラーになります。

つまり「=シート名!セルのアドレス」という参照式がエラーになったら、そのワークシートは存在しないということです。数式がエラーになるかどうかは、ISERROR関数で判定します。

別シートへの参照式がエラーになるかどうかを判定するだけですから、セルのアドレスは別にA1でなくてもいいです。
Excel 2007で追加されたIFERROR関数を使うなら、次のような感じですね。

「0」と表示されているのは、INDIRECT(A2&"!A1")がエラーにならず、そのシートのセルA1を参照しているということです。今回は、どのシートのセルも空欄にしていますので、参照した結果として「0」が表示されています。今回のテーマは「ワークシートが存在しているかどうかを判定する」ですから、「存在しない」ということがわかればいいでしょう。
注意すべきは、「2010年」や「5月」のように、シート名が数値で始まっているケースです。数値で始まっている名前のシートを参照するときは、「=シート名!セルのアドレス」ではなく
='シート名'!セルのアドレス
のように、シート名をシングルコーテーション(')で囲まなければなりません。

したがって、INDIRECT関数で生成する参照式も次のようになります。
