• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 一覧シートから各シートへ参照)

EXCEL一覧シートから各シートへ参照

このQ&Aのポイント
  • EXCELを使用して一覧シートから各シートへの参照を行いたい場合、数式やVBAマクロを使用することで実現可能です。
  • 一覧シートには、シート名と名前が記載されており、各シートのA1セルに参照させたい値が入力されています。
  • 順次増えて最終的には100個のシートになる予定ですが、数式やVBAを使えばこの要件を簡単に満たすことができます。

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

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

シート 1 のA1に以下の式を入力 =VLOOKUP(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))*1,一覧!A:B,2,FALSE) これで、一覧シートのA列からシート名を検索し、B列にある名前を返します。 このシートをコピーして、シート名を変更すれば、それぞれのシート名をA列から探して、その横の名前を 表示してくれます。

yamagata1192
質問者

お礼

まさにビンゴでした。 ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! Sheetは 1・2・3・山田・鈴木・木村・・・とSheetがすでにあるとして 仮に「一覧シート」のA3セルに「2」・B3セルに「鈴木」と入力した場合は 「2」というSheet名のシートのA1セルに 「鈴木」というSheet名のB3セルの値を返せばよい!というコトですかね? VBAになってしまいますが、そう解釈しての一例です。 画面左下の「一覧」Sheetのシート見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストして「一覧」SheetのA・B列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i As Long, k As Long, str1 As String, str2 As String, myFlg As Boolean If Application.Intersect(Target, Range("A:B")) Is Nothing Or Target.Count <> 1 Then Exit Sub With Target i = .Row If .Column = 1 Then str1 = .Value For k = 1 To Worksheets.Count If Worksheets(k).Name = str1 Then myFlg = True Exit For End If Next k If myFlg = False Then MsgBox "入力したシートが存在しません、" & vbCrLf & "存在するシート名を入力してください。" .Select Exit Sub End If Else str2 = .Value For k = 1 To Worksheets.Count If Worksheets(k).Name = str2 Then myFlg = True Exit For End If Next k If myFlg = False Then MsgBox "入力したシートが存在しません、" & vbCrLf & "存在するシート名を入力してください。" .Select Exit Sub End If End If End With If WorksheetFunction.CountBlank(Range(Cells(i, "A"), Cells(i, "B"))) = 0 Then str1 = Cells(i, "A") str2 = Cells(i, "B") Worksheets(str1).Range("A1") = Worksheets(str2).Range("B" & i) End If End Sub 'この行まで こんなんではどうでしょうか?m(_ _)m

yamagata1192
質問者

お礼

ありがとうございました まさにこの通りです。 回答2の方の関数を使う方法が  今の私の技量では応用が利きそうです。 せっかくアドバイスくださったのに申し訳ございません。 少しVBAを勉強して じっくり参考にさせて頂きます

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

んーと? >シートが 一覧、1、2、3、 とあります。 が間違いで、プラス「山田」シート、「鈴木」シート、「木村」シートがそれぞれあるんですね?「山田シート1」とかも間違いで。 準備: ブックを「必ず」一回保存しておきます。 一覧のA列にもしも本当に1,2,3と記入しているのなら、A列を一回選択、セルの書式設定の表示形式を文字列に設定、改めて1,2,3を記入し直します 123は「実はウソ」で1,2,3「じゃない言葉」をA列に記入している場合、それが原因で計算が通らなくなるので必ず行ってください。 それから「半角数字の123」と「全角文字の123」の記入間違い、シート名間違いにも十分注意してください。 #練習 1,2,3の各シートの仮にC1セルに =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99) と記入、自シート名が計算できることを確認してください。 >シート 1 のA1には、山田シート1のB2 >シート 2 のA1には、鈴木シート1のB3  : それぞれB2、B3…のように参照したいで間違いないのですね。 手順: シート1,2,3のA1には =INDIRECT(VLOOKUP(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99),一覧!A:B,2,FALSE)&"!B"&MATCH(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99),一覧!A:A)) と記入します。 解答の手順と勝手に違う事をするとエラーになるので、キチンと回答した通り漏れなく行ってください。

yamagata1192
質問者

お礼

ありがとうございました。 各シートの特定の部分を一覧に表示させることは容易にできましたが、 一覧シート以外のシートはすべて同じフォームで 一覧シートにある各個人の氏名をそれぞれのシートの氏名欄にに反映出来ないものか 考えておりました。修正や増やす、 今から作成する場合 いちいち該当のシートに移動して入力するよりも 一覧で入力できた方が楽だと考えたからです。 (シート ”1”は山田さん用 ”2”は鈴木さん用) 説明不足で申し訳ございません また機会がありましたらよろしくお願いします。

関連するQ&A

専門家に質問してみよう