• ベストアンサー

エクセルでシートの参照先を調べたい

エクセル2000です。 特定のセルの参照先なら、メニューの「ツール」から「ワークシート分析」で調べられますが、これは、ひとつずつ、セルをアクティブにしていかないと調べられません。 アクティブにしたシート(または選択したセル範囲)のどこかのセルを、他のシートのどこかのセルが参照しているかどうかを一度に調べる方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 考え方は #1 ご回答のとおりで、検索時に   ・数式を対象   ・検索値を調べるシート名 で曖昧検索すれば良いのだと思います。VBA でもこの応用で Find で探せ ば良いのですが、下記マクロでは数式セルを For Each ~ で順次チェック にしました。なんとなく。Find の方が多分早いかな? > または選択したセル範囲 シート単位ならともなく、選択したセル範囲ってかなり面倒そうです。 だから聞かなないでね(´・ω・`) ちなみに Range しか調べてませんよ。 ' // 他シートからアクティブシートを参照している数式の列挙 Sub Macro1()   ' Dependents はアクティブ シートのみで、リモート参照をトレースできない   ' 力技で数式に対象シート名があるかどうかで判定^^;   Dim Sh     As Worksheet   Dim rUse    As Range   Dim C      As Range   Dim sShName   As String   Dim Result()  As String   Dim i      As Long      sShName = ActiveSheet.Name   i = -1   For Each Sh In Worksheets     If Sh.Name <> sShName Then       ' 23: All Value Type       Set rUse = Sh.Cells.SpecialCells(xlCellTypeFormulas, 23)       For Each C In rUse         If InStr(C.Formula, sShName) > 0 Then           i = i + 1           ReDim Preserve Result(1, i)           Result(0, i) = Sh.Name & "!" & C.Address           Result(1, i) = "'" & C.Formula         End If       Next C       Set rUse = Nothing     End If   Next   ' 出力   If i > -1 Then     Application.ScreenUpdating = False     Set Sh = Worksheets.Add     For i = 0 To UBound(Result, 2)       Sh.Hyperlinks.Add Anchor:=Sh.Cells(i + 1, "A"), _                Address:="", _                SubAddress:=Result(0, i), _                TextToDisplay:=Result(0, i)       Sh.Cells(i + 1, "B").Value = Result(1, i)     Next i     Sh.Columns("A:B").AutoFit     Set Sh = Nothing     Application.ScreenUpdating = True   Else     MsgBox "このシートを参照している数式はこのブック内にありません", vbInformation   End If   Erase Result End Sub

merlionXX
質問者

お礼

うっ!!すごい!! 何と、ブック内の他シートすべてを検索しちゃってるんですね。 マクロならこそ出来るワザですねえ。 しかも、それを配列にしてまとめて出力してハイパーリンクをつけるなんて至れり尽くせり・・・。 すごすぎます。恐れ入りました。 ありがとうございます。(o。_。)oペコッ.

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

#2 です。忘れてました。 > Set rUse = Sh.Cells.SpecialCells(xlCellTypeFormulas, 23) > For Each C In rUse ここで該当セルが無いとエラーが発生するので、適当にトラップして 下さい。先頭に On Error Resume Next で良いかと。 > マクロならこそ出来るワザですねえ。 Excel 2002 以降なら検索ダイアログに「全て検索」コマンドがあるので、 マクロを使わなくても同様のことはできますよ。 でも、確かお使いになってるのは Excel2000 でしたよね? それで、マクロにしました。

merlionXX
質問者

お礼

ありがとうございました。

  • onara931
  • ベストアンサー率25% (141/545)
回答No.1

他のファイルを参照にしているかどうかでしたら、全てのシートを選択して「=c:\」を検索すると見つかります。 (お使いのパソコン環境によっては、ドライブ名を複数指定して検索する必要があるかも)。 同一ファイル内でしたら同じようにシートを全部選択して、「!」を検索すると見つけることが出来ました。 ただ「!」が文中に多数使われていると時間がかかるかも。(^^;

merlionXX
質問者

お礼

あら、onara931さん、さきほど倍数の質問に答えておきましたよ。 で、わたしの質問は、「参照元」ではなく「参照先」なんですよぉ。 他シートを参照しているかではなく、他シートから参照されているかを調べたいんです。

関連するQ&A

  • excelのワークシート分析ツール

    excelのワークシート分析ツールで、セルを参照する時、参照先のセルの前に、ファイルの名前が表示されてしまい、参照をするのに手間取っています。ファイル名が表示されないようにするには、どうすれば良いのでしょうか?教えていただけると助かります!!

  • エクセルでシート間の参照がされるところされないところがあるんです。なぜ?

    こんにちは。 エクセルで,Sheet1のセルにSheet2のセルを参照しようと思います。 Sheet1のA1のセルに,Sheet2のA1のセルを参照しようとした場合,=Sheet2!A1と入力することになると思います。 しかし,セルには,「=Sheet2!A1」と表示されてしまうのです。 他のセルには,参照された文字,数字が入っているのに,ある特定のセルだけは,上記のようになってしまいます。 どのようにすれば解決できるのでしょうか。 お教え頂ければ幸いです。 宜しくお願いいたします。<(_ _)>

  • EXCELの参照先ワークシートのセルにおける文字列への変換

    恐縮ですが、MS-EXCELの次の操作方法をご教示下さい。 同じブックの中であるワークシートAの特定のセルaの文字列を他のワークシートBの特定のセルbで参照している場合、 このセルbにおいて、参照した文字列を、参照の形でなく、セルbの文字列に変換するには、どういう操作をすればよいのでしょうか?

  • Excelのシート参照をするにあたって

    あるセルに他のシートを参照して集計する関数を記述しているのですが 参照先のシートが一度消去されてしまうと参照もとのセルに記述した 参照先シート名が自動的に#REFになってしまいます。 (例:「=Sheet1!A2」と記述していて「Sheet1」を削除すると「=#REF!A2」になってしまう) この現象はどうにか防げないものでしょうか? よろしくお願いします。

  • Excelのシート間の参照

    エクセル初心者です。 エクセルでシートが2枚あるものを作成しました。 一枚目のシートのA1のセルの内容(言葉)を 二枚目のシートのB3のセルの内容に参照させたいと思い B3を選択し、セルのなかに =を入力して 一枚目のシートのセルA1をクリックしようと思ってもクリックができません。 二枚目のシートのセルB3を同じ二枚目のシートのB10にあてようとして =を入力してB10をクリックすると参照ができます。 =B10 セル内は↑のようになります。 どうしてできないのでしょうか? 困っています.教えてください。

  • エクセルのセル参照について

    エクセル2007でワークシートAのセル参照をワークシートBのセル(20カ所位)で設定しています。このワークシートBのセル参照のワークシート名をAから新たに作成するワークシートCに効率良く変更する方法はありますか?

  • excelでシートごと印刷しない設定にしたい

    選択したEXCELブックを全シート印刷するツールがありまして こいつの運用で頭を悩ませています。 印刷範囲設定をかけたりシート非表示にすれば不要部分は印刷されないのですが、 表示する必要があるが印刷は不要というシートがあって、 一セルだけ印刷範囲に選んでそのセルを非表示とかにしても空白ページが1ページ印刷されてしまいます。 EXCELの特定シートをまるごと印刷しない設定とか方法は無いでしょうか。 EXCEL2016、マクロは使用可能です。 ツールは内部的に全シート選択&印刷をやっているのだと思います。 ツールを使わないという選択肢は無しです。 よろしくお願いします。

  • 存在しないシートの参照について

    こんにちは、 EXCEL2007を使用しています。 あるシートから存在しない他のシートを参照すると、参照エラー「#REF!」が表示されます。 このとき参照先のシートを追加してもエラー表示のままです。 該当シートが追加されたときに自動で更新させる方法はないのでしょうか? データメニューの「すべて更新」を行っても変化がなく、エラー発生セルでENTERすると更新されます。 よろしくお願いいたします。

  • Excelのシート間の参照

    Excelでシート間のセルの参照をしたいのですが、どのシートを参照するのかを すぐに変えることのできるようにしたいのです。 具体的には、A、B、Cという名前のシートがあり、シートDにおいて A1セルにA、B、Cいずれかの文字を入力すると、その下のセルの参照先が シートAのB1セルになるようにしたいのです。 とりあえず色々式を入れてみたのですが、すべて拒否されてしまいました。 たとえば ='A1'!B1 ='"A1"'!B1 とかです。 よろしくお願いします。

  • エクセルシートの参照について

    エクセル2013を使用しています。 エクセルシート「H26会費」に数字が羅列されており、それを参照して別シートに 領収証がつくられています。領収証は数十地区分が並んでいて、金額のところに “H26会費”!B2 というように参照しているのですが、年度がかわるとそれぞれを H27に変更しなければならず、簡単な方法を考えています。 例えば、あるセルに「H27会費」など参照したいシートの名前をうちこんでおいて、領収証シートではすべてそのセルの名前にあるシートから参照する、というような。そのような ことはできるのでしょうか?もしできたら年度が変わっても簡単に参照できるなぁと考えているのですが・・・。また、別の方法でも簡単な方法がありましたら教えていただければと思います。 わかりづらい文章で申し訳ございませんが、よろしくお願いいたします。

専門家に質問してみよう