- ベストアンサー
エクセルでシートの参照先を調べたい
エクセル2000です。 特定のセルの参照先なら、メニューの「ツール」から「ワークシート分析」で調べられますが、これは、ひとつずつ、セルをアクティブにしていかないと調べられません。 アクティブにしたシート(または選択したセル範囲)のどこかのセルを、他のシートのどこかのセルが参照しているかどうかを一度に調べる方法はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。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
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
#2 です。忘れてました。 > Set rUse = Sh.Cells.SpecialCells(xlCellTypeFormulas, 23) > For Each C In rUse ここで該当セルが無いとエラーが発生するので、適当にトラップして 下さい。先頭に On Error Resume Next で良いかと。 > マクロならこそ出来るワザですねえ。 Excel 2002 以降なら検索ダイアログに「全て検索」コマンドがあるので、 マクロを使わなくても同様のことはできますよ。 でも、確かお使いになってるのは Excel2000 でしたよね? それで、マクロにしました。
お礼
ありがとうございました。
- onara931
- ベストアンサー率25% (141/545)
他のファイルを参照にしているかどうかでしたら、全てのシートを選択して「=c:\」を検索すると見つかります。 (お使いのパソコン環境によっては、ドライブ名を複数指定して検索する必要があるかも)。 同一ファイル内でしたら同じようにシートを全部選択して、「!」を検索すると見つけることが出来ました。 ただ「!」が文中に多数使われていると時間がかかるかも。(^^;
お礼
あら、onara931さん、さきほど倍数の質問に答えておきましたよ。 で、わたしの質問は、「参照元」ではなく「参照先」なんですよぉ。 他シートを参照しているかではなく、他シートから参照されているかを調べたいんです。
お礼
うっ!!すごい!! 何と、ブック内の他シートすべてを検索しちゃってるんですね。 マクロならこそ出来るワザですねえ。 しかも、それを配列にしてまとめて出力してハイパーリンクをつけるなんて至れり尽くせり・・・。 すごすぎます。恐れ入りました。 ありがとうございます。(o。_。)oペコッ.