• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで、別シートを参照しているセルのリストアップ)

エクセルで別シートを参照しているセルのリストアップ方法

x0000xの回答

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

こんにちは。#1です。 >このときにシート名だけを抜き出したりすることは可能なのでしょうか。 シート一覧のイメージ?でしょうか? 可能です。 処理中のシート名は「 st.Name 'Sheet名」で取得できます。 どのように表示するか不明なので以下では「'★シート単位の処理」で示す位置にコードを追加してください。 >シート名ごとに色や処理を変えることができるなら頑張りたいです。 セルの色設定は、 st.cells(行,列).Interior.ColorIndex = 6 '色付け で可能です。(行、列はシート名を格納したセル位置に変えてください) 上記でシート名を抜き出したセルの背景色が変更できます。 ただし、シートすべてに別々の色をつけるのは無理です。 上記のコードでは、40色(白含む)程度です。 >数十ファイルを対応するために……ファイル名と出力シート名を引数で可変にすればいいのかな? Sheet1のA2~AnにBOOKのPATHを文字列で設定することで 連続処理するのであれば、以下のマクロでどうでしょうか? '変更前をコメント化し、'追加、'変更後を新たに記述しています。 Sheet2のA、B,C,D列にそれぞれ、BOOK名、Sheet名、セル名、式を表示します。 Sub findLink() Dim oSt As Worksheet Set oSt = Sheets("Sheet2") oSt.Cells.Clear ' oSt.Range("A1").Value = "Sheet名" '変更前 ' oSt.Range("B1").Value = "Cell名" '変更前 ' oSt.Range("C1").Value = "式" '変更前 oSt.Range("A1").Value = "BOOK名" '変更後 oSt.Range("B1").Value = "Sheet名" '変更後 oSt.Range("C1").Value = "Cell名" '変更後 oSt.Range("D1").Value = "式" '変更後 Dim outCnt As Long '変更後 outCnt = 0 '変更後 Dim iSt As Worksheet '追加 Set iSt = Sheets("Sheet1") '追加 'BOOKファイルの定義最大行位置取得 '追加 Dim maxRowIST As Long '追加 maxRowIST = iSt.Cells(iSt.Rows.Count, "A").End(xlUp).Row '追加 Dim R As Long '追加 For R = 2 To maxRowIST '追加 Dim bk As Workbook ' Workbooks.Open ("C:\test.xls")  '変更前 Workbooks.Open (iSt.Cells(R, "A").Value) '変更後 Set bk = ActiveWorkbook Dim st As Worksheet ' Dim outCnt As Long '変更前 ' outCnt = 0 '変更前 For Each st In bk.Sheets '★シート単位の処理 Dim stopAddr As String Dim rng As Range Set rng = st.Cells.Find(what:="!", LookIn:=xlFormulas) If Not rng Is Nothing Then stopAddr = rng.Address Do outCnt = outCnt + 1 '出力件数カウント ' oSt.Cells(outCnt + 1, "A").Value = st.Name 'Sheet名  '変更前 ' oSt.Cells(outCnt + 1, "B").Value = rng.Address 'セル名 '変更前 ' oSt.Cells(outCnt + 1, "C").Value = "'" & rng.Formula '式 '変更前 ' ' oSt.Cells(outCnt + 1, "C").Value = Replace(rng.Formula, "=", "") '式 =を外す '変更前 oSt.Cells(outCnt + 1, "A").Value = bk.Name 'BOOK名 '変更後 oSt.Cells(outCnt + 1, "B").Value = st.Name 'Sheet名 '変更後 oSt.Cells(outCnt + 1, "C").Value = rng.Address 'セル名 '変更後 oSt.Cells(outCnt + 1, "D").Value = "'" & rng.Formula '式 '変更後 ' oSt.Cells(outCnt + 1, "C").Value = Replace(rng.Formula, "=", "") '式 =を外す rng.Interior.ColorIndex = 6 '色付け Set rng = st.Cells.FindNext(rng) '次を検索 If rng Is Nothing Then Exit Do '発見できないので終了 End If Loop While (stopAddr <> rng.Address) '最初に発見したセルと同じなので終了 End If Set st = Nothing Next bk.Close (True) '上書き保存 Set bk = Nothing Next '追加 Set oSt = Nothing MsgBox "検索終了!" End Sub

suzukiri
質問者

お礼

 その後、各種の問題が出つつもなんとか調査が進んでおります。  ご丁寧にありがとうございました。  もしよろしければ、また詰まったときにご教授いただければと思います。

suzukiri
質問者

補足

 わざわざありがとうございます。  また、説明の足りてないところがあり申し訳ありません。  #1でいただいたソースを元に、以下の通り修正を行って実行してみました。 ・ マクロを保存したブックのシート1に、エクセルのファイル名(ファイル一覧)を記述し、ファイル名と出力先のシート名(ファイル名に通し番号をつけ、30バイトでカット)を引数にループで findLink の関数を呼ぶ関数を作って実行。 ・ マクロを保存したブックに、上記引数のシート名で、50ファイル分の結果(50シート)を出力することができた。  このときやりたかったことが、調査対象のエクセルファイルのセルが、どこのシートを参照していたかの「参照元シート名を抜き出したい」ということでした。説明不足で申し訳ありません。  シート間の関連性を調査しているため、どこのシートの値を参照していたかが知りたい状態です。  でも検索後のシート名の抽出がよくわからなかったため、断念しております。  返答遅れて申し訳ありません。  自分のほうで試行錯誤し、やっと動いて結果が抜き出せた……ところで、なぜかエクセルファイルが開かなくなりました。マクロでワークシートのコピーとか色々してみましたが、オープンもできずに応答なしになるようです。とほほ。  また、教えてくださったソースを元に色々頑張ってみます。どうもありがとうございました。

関連するQ&A

  • エクセルにてあるセルに年式を打ち込むと、別シートにある顧客リストから、

    エクセルにてあるセルに年式を打ち込むと、別シートにある顧客リストから、月・日の区別なしに抽出し、左セルの地方名に準じて、さらに抽出されるような計算式を教えて頂けますでしょうか?

  • 別シートへのセル参照について

    別シートへのセル参照についての質問です。 例えばSheet1のA1,B3,C6,G9に値が入っているとします。 その値を順にSheet2のB2,C4,D9,E17に参照したいのですが、 それぞれにセル参照しないとダメなんでしょうか? Sheet1,Sheet2に違う種類の表があって、それぞれに同じ値を入力するんですが、Sheet1に入力すれば自動的に入るようにしたいです。 実際はSheetや、値を入力するセルがかなり多いので、ひとつひとつセル参照するのが大変なので・・・よろしくお願いします。

  • Excel2010でセルの参照について

    こんにちは。 Excel2010のセルにリストを設定しました。 この設定を別のシートのセルにも適用したいのですが、 ・リストの設定を参照して、選択される値は参照先の自由に。 ・参照元のリストの項目が追加されると、参照先でも追加される。 ということを行いたいのですがExcelではどのようにすればよろしいでしょうか。 コピー&ペーストでは、参照元のリストの項目が増えても、参照先では増えません。 =シート名!セル位置で行うと、参照元でセットされた値だけが参照先に表示される。 となり私の期待したものになりません。 上記のようなことは可能でしょうか?

  • Excel 別シートのセルを参照させる時の疑問

    エクセルであるシート(A)のセルに、別シート(B)の特定のセルを参照させたい場合、(A)のセルに= を入力し、続けて(B)の参照させたいセルを選択すると、=の後に選んだシート名+「!」+セル名が表示されます。 同じ作業をいくつか続けて行っているのですが、一カ所だけ「=」のあとのシート名が 「'」マークでくくられます。 問題なく選択したセルの参照は行えるのですが、この「'」は何を表しているのでしょうか。 分かりにくいので例を書きますと、たとえば「sheetA」の「A1」を参照させた場合、 ケースその1 : =sheetA!A1 ケースその2 : ='sheetA'!A1 このような違いがあります。 お分かりになる方がいらっしゃいましたら、恐れ入りますがよろしくお願いいたします。

  • 別シートのセル参照

    Excel(Win2000,Excel2002)で別シートのセルを参照する場合、シート名を入れると思うのですが、シート名を入れずに一つ右隣のシートというような指定をする事が出来ますか?記号などを使用して出来るのであれば方法を知りたいのですが。お願いします。

  • Excel 別シートのセル参照

    Excel で、二つのシート間でセル参照したいのですが、シートに書き込んでおくコマンドの書き方を教えてください。 (操作) Sheet2 でA列のどこかのセルをダブルクリックしたとき、B列およびC列の該当行の値を、Sheet1 の二つの固定セルにそれぞれ表示させる。 よろしくお願いします。

  • エクセルのセルを参照して別シートに張り付ける

    こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。ただし、コピー先のsheet2のセルの値は、sheet1を参照するだけでなく文字や数値として表示できないかと悩んでいます。 図で説明すると  (sheet1)                →           (sheet2)   A    B    C     D           A     B    C     D 1あああ  10  いいい  えおう        1いいい  えおう  10    あああ 2あああ  10  いいい  かけこ       2いいい  かけこ  10    あああ 3あああ  10  いいい  みまつ       3いいい  みまつ  10    あああ  4あああ  10  いいい  さぐも        4いいい   さぐも   10    あああ また、上記のようにsheet1とsheet2の列は同じ場所ではありません。 このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。

  • Excelで参照するシート名を計算で求めることは可能ですか?

    前置き 本当は邪道だと思うのですが・・・・。 Excelでとある見積書を部品ごとにシートを分けて作成しており、 そのシートは80シートにも及びます。 この見積書の合計部分のみを集めた、統括表の様なシートを別途作成 してその表に80シートの合計部分のみを自動参照(リンク)させて計算 したいのですが、計算式をコピーしてもセル参照は変わってもシート名だけは 変わってくれず、ひとつひとつシート名を手修正している次第です。 ファイルはたくさんあるのでこのままでは、日が暮れてしまいそうで 困り果てております。 シート名の部分をこのセルの値を参照するというように計算で求めることは 可能でしょうか?教えてください。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • excel 参照しているセルに色がついていたら、返すセルにも色もつける

    excelの詳しい方、ぜひ教えてください! Sheet1にあるデータを、計算式によってSheet2に参照させていますが、Sheet1のセルの色までは参照する事ができません。 計算式はいたって簡単で、例えばSheet1のA1を参照している時は、Sheet2のセルに =Sheet1!$A$1 と計算式を入力しています。 条件付き書式や関数も考えたのですが、 ”もし、参照しているセルに色がついていたら、返すセルにも色もつける” をどうすれば出来るのかわかりません。 どうか、わかる方ぜひ教えてください。お願いします!!