別シートのセルの文字をシート名に自動で変更

このQ&Aのポイント
  • エクセル2010を使用している場合、関数で呼び込んだ別シートのセルの日付で、シート名が自動で変更できるかどうかについてお助け頂けないでしょうか?
  • 「勤務表」のシートのA4の日付を変更すれば、「Sheet1」のシート名も自動的に変換できるようにとネット検索で見つけてきたマクロの記述を試しましたが、何の変化もありません。関数で呼び込んだ文字では、シート名の自動変更はできないようです。
  • 関数で呼び込んだ別シートのセルの日付で、シート名が自動で変更できる方法が分からず困っています。エクセル2010を使用しているのですが、どのように対処すれば良いでしょうか?
回答を見る
  • ベストアンサー

別シートのセルの文字をシート名に自動で変更

いつもありがとうございます。 下記の添付の「勤務表」のシートのA4の日付を変更すれば、「Sheet1」のシート名も自動的に変換できるようにとネット検索で見つけてきた下記のマクロ(?)の記述をセル名を変えてコピペし、「勤務表」のシートのA4の日付を変えて見たのですが、何の変化もありません。エラーメッセージも出ません。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "勤務表!A4" Then ActiveSheet.Name = Range("勤務表!A4").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のセルの値はシート名にできません。" End Sub 「勤務表」のシートのA4以下は、B1とE1の数値から自動で一ヶ月分の日付を入れる関数を入れて日付を作成しています。 =IF(DATE($B$1+1988,$E$1,ROW(A21))>DATE($B$1+1988,$E$1+1,20),"",DATE($B$1+1988,$E$1,ROW(A21))) 念のため、「Sheet1」内のA1でシート名が変わるかどうか試してますと、直接入力した文字の場合、シート名が入力した文字に問題なく変わりますが、関数で呼び込んだ文字は「現在のセルの値はシート名にできません。」のエラーメッセージが返って来ました。 このことから、関数で呼び込んだ文字では、シート名の自動変更はできないのが判りましたが、「勤務表」から呼び出した場合、エラーメッセージも出ないところを見ると、そのことの対処だけでは、解決しないような気がしています。 色々、ネットで検索したりもしましたが、未熟な私の知識と経験では、行き詰ってしまいました。 関数で呼び込んだ別シートのセルの日付で、シート名が自動で変更できるように、 お助け頂けないでしょうか? 当方はエクセル2010を使用しております。 よろしくお願いいたします。

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

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

おっと失礼, 変更前: worksheets("Sheet1").copy(after:=worksheets(worksheets.count)) 変更後: worksheets("Sheet1").copy after:=worksheets(worksheets.count) #マクロが動かないのは,準備や手順に間違いがあるからです。  回答の手順を見ながら,もう一回最初からやり直してください。 #余談 しかし回答しながら不思議だったのは,21日シートから翌20日シートまでは毎月必ずある(要る)のですから,月替わりで31日が無ければ31日シートだけ使わずに放っておけば,毎日分のシートをわざわざ毎月新調しなきゃならない理由は何も無いように思えますけどね。 シートを新調するんじゃなく,先月分の毎日シートを「クリアする」みたいなのをマクロでやらせるなら,それはそれで理解出来ますが。 参考) 勤務表シートのマクロをすべて消去し,下記のマクロを代わりにコピーする 勤務表のB1,E1を書き換えると勤務表以外のシートのB2:J30をクリアする private sub worksheet_change(byval Target as excel.range)  dim w as worksheet  if target.address <> "$B$1" and target.address <> "$E$1" then exit sub  for each w in worksheets  if w.name <> "勤務表" then   w.range("B2:J30").clearcontents  end if  next end sub

yamagou
質問者

お礼

度々、お手数をおかけ、お助け下さっていることに感謝致します。 ありがとうございます。 やはり、うまくいきません。 本当に申し訳ありません。 今は、まだ、やり方のどこが悪いのか、研究しているところです。 余談で申し訳ありませんが、 元々、勤務表シートと31枚の日付を付けた(21、22、…31、1、2、3、…19、20)シートを用意しておき、月毎に変わる「勤務表」シートのA4~A34の日付を各日付のシートのA2セルに関数で呼び込んで、出欠勤者のリストを1ヶ月分をまとめて作成することにしました。 その理由は、 (1)自分が休日などで、パソコンを触ったこともないパートさんにも、プリントアウトしてもらう必要上、最小限の操作でプリントアウトしてもらえるよう、事前に1ヶ月分用意しておきたかった。 (2)日付シートにはその日の出欠勤者の名前とその日の作業を指示するもので、作業内容を記録として残しておきたい。 当初は、毎日、「今日の出欠勤者」という一枚のシートで日付ごとに呼び出す方法を考えましたが、以上の(1)、(2)の理由から、31日分前もって作成することとしたのです。 ところが、途中で、勤務の締めの関係で、「月度」始めが21日から始まり、途中に月末が来る関係で、例えば、28日までしかない「2月」で見ると、31日まである大の月を基準にシート名を付けると、「29」シートが3月1日の出欠勤者のリスト、「30」シートが3月2日の出欠勤者のリスト、「31」シートが3月3日の出欠勤者のリストというようにワークシートの日付とずれてしまうことに気がついたのです。 普通のカレンダーの様に1日~31日迄の順に並んでいれば、2月は「29」~「31」シートを無視するだけで済むのですが・・・。 それなら、日付シートのシート名を勤務表シートの日付によって変えることが出来ればと考えたわけです。 (1ヶ月分のシートを毎月、新調する発想は思いもよらなかったのです。) そこで、もともと各日付シートのA2にタイトルとして日付を関数で呼び込んでいたので、そのA2の日付を参照して、同一シート内のセルの値(この場合、日付)でワークシートの名前を変えるマクロを各日付シートに仕込みたかったのです。 ところが、ネットで検索したマクロ構文ではうまく行きませんでした。 今にして思えば、関数で呼び込んだ日付が問題だったようなのですが…。 とうとう、行き詰り、困り果てて質問したところ、シートが「日付の変更」で新調できると言うではありませんか。 思はず大感激したものでした。 しかし、マクロ初挑戦の私では、やはり、無理だったのでしょうか。 多くの方々のお手を煩わせた上に、未だ完成させることができません。 関数で呼び込んだ日付では、Worksheet_Changeが起こらないということも今回やっと理解できたくらいです。 どうも、ありがとうございました。

yamagou
質問者

補足

後先が逆になり、申し訳ありませんが、参考)の構文を試して見ましたが、「実行時エラー’1004’結合されたセルの一部を変更することができません」のメッセージで検証することが出来ませんでした。 ありがとうございました。。

その他の回答 (5)

  • excelist
  • ベストアンサー率56% (13/23)
回答No.5

No1の者です。 No4さんのマクロは以下のように修正すれば動作します。 worksheets("Sheet1").copy(after:=worksheets(worksheets.count)) ↓ worksheets("Sheet1").copy after:=worksheets(worksheets.count) 一応No3の補足に対してコメントします。 「例えば勤務表のA4の日付を~~~」という点についてですが、別のシートに「=勤務表!A4」と記述したとして、【そこの日付が変わるタイミング】というのは【「勤務表」シートのA4の値が変わるタイミング】となります。今回はさらに【「勤務表」シートのA4の値が変わるタイミング】というのが【「勤務表」シートのB1またはE1の値が変わるタイミング】となります。ですのでWorksheet_Changeは「勤務表」シートに挿入する、という結論に至ります。 なお、Worksheet_Changeというのは「セルが編集されたとき」に動作するマクロで、「セルの値が変わったとき」に動作するというわけではありません。例えばF2キーで一旦セルを編集状態にして、値を変えずにEnterキーを押した場合でもWorksheet_Changeは動作します。また例えば別シートの値を表示する関数(例えば=勤務表!A4)が入力されている場合、別シートの値を変えて「セルの値は変わった」としても「セルは編集されていない」のでWorksheet_Changeは動作しません。関数の結果の表示が変わっただけで、式が編集されたわけではないからです。 このあたりは文字で説明してもややこしいかと思います。もしがんばる気が残っているのであればいろいろなシートに下記のWorksheet_Changeを挿入してみて、どのタイミングで動作しているか確認してみると理解が深まると思います。 Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "編集されたセル=" & ActiveSheet.Name & "の" & Target.Address(False, False) End Sub

yamagou
質問者

お礼

丁寧な、ご指導ありがとうございます。 ご指示に従って、構文の下から5行目を変更しましたが、何もおこりませんでした。 もちろん、No4のkeithin様の条件も勘案し、作業したのですが、うまく行きませんでした。 関数での引用の変更では、うまくいかない理由はよくわかりました。 ありがとうございました。

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

結局丸投げで全部の段取りをやってもらわないと、ご自分では収拾できそうにありませんね。 次の通りに作成してください。勝手に違うことをすると失敗します。 準備: 勤務表シートを用意すること 毎日のひな型になるSheet1シートを用意すること ヤリタイ事: 勤務表でA列の日付を計算しなおすと、自動で日数分のシートをSheet1をひな型にして31枚(または必要数)日付をシート名にして作成させたい 手順: 勤務表シートのシート名タブを右クリックしてコードの表示を選び、現れたシートの記載内容を全部消してから、下記をコピー貼り付ける #他のマクロが残っていると動かないので、きれいに全部消すこと private sub worksheet_change(byval Target as excel.range)  dim w as worksheet  dim h as range  if target.address <> "$B$1" and target.address <> "$E$1" then exit sub  for each w in worksheets  if w.name <> "勤務表" and w.name <> "Sheet1" then  application.displayalerts = false  w.delete  application.displayalerts = true  end if  next  for each h in range("A4:A34")  if h <> "" then  worksheets("Sheet1").copy(after:=worksheets(worksheets.count))  activesheet.name = format(h.value, "mmdd")  end if  next end sub

yamagou
質問者

補足

何から何まで、お世話になりありがとうございます。 指示通りにしたのですが、何も起こりません。 構文を入力するとご指示の構文の下から5行目の worksheets("Sheet1").copy(after:=worksheets(worksheets.count)) が、赤文字になっています。 素人過ぎて申し訳有りませんが、今一度、お助けいただけないでしょうか?

  • excelist
  • ベストアンサー率56% (13/23)
回答No.3

No1の者です。 どのタイミングでシート名を変更したいのか!を整理しないとですね~ Worksheet_Change というのは、それを記述しているシート内のセルが編集されたときに動作するマクロです。「勤務表」シートのA4の値が変更されたときにシート名を変更するのであれば、「勤務表」シートにWorksheet_Change を挿入する必要があります。もしも「勤務表」シートのB1やE1の値がSheet1の値を元にしている関数で(=Sheet1!A1など)、Sheet1の変更タイミングで名前を変えたいのであればSheet1にWorksheet_Changeを挿入します。 また、今回の場合だとA4には関数が入っており、B1またはE1の値が編集されたときにA4の表示が変わるので、If Target.Address(False, False) = "A4" Then ではだめでした(すいません)。 No2さんが書いてくれたコードのように、編集されたセルがB1またはE1の場合に動作するようにしてください。 最後に名前を変更したいシートの指定方法がいくつかありますので、参考までに記載しておきます。 1.シート名で指定する=worksheets("Sheet1") ⇒シート名が変わると動かなくなる 2.シート番号で指定する=worksheets(1) ⇒シートの並び順で1,2,3・・・というように指定できます。今回の場合だとSheet1は左から2番目のシートですのでworksheets(2)と指定できます。シートの並び順を変えると不具合がおきる。 3.シートオブジェクト名を指定する=Sheet2 シートにはオブジェクト名がついています。シート名が変わってもシートの並び順が変わっても問題はありません。オブジェクト名はVBエディタのプロジェクトエクスプローラで確認でき、プロパティウィンドウで変更もできます。シートを挿入する都度Sheet1、Sheet2、Sheet3・・・のような名前になります。対象となるシートを削除しない限り動作するコードになるので有用ですが、あまり知識がない場合はお勧めできないかもです。

yamagou
質問者

補足

お忙しいところを、丁寧に指導頂きましてありがとう御座います。 例えば勤務表のA4の日付をの名前を変更したいシートのA1に =勤務表!A4 で持って来て、そのA1の日付の変更にて、シート名を変えられないかと、色々ご教示頂いたマクロを組み合わせて、以下の用に記述したのですが、A1セルはやはり関数のせいなのか、根本的に間違っているのか、勤務表の日付を変更しても、まったく反応がありません。 素人知識ではやはり、限界が有ります。 一ヶ月分(31シート)を毎月度末に作らなければなりません。 何か、よい手法はないものでしょうか? 以下をシート名を変更する各シートに記述しようとしました。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "$B$2" Then ActiveSheet.Name = Format(Range("$B$2").Value, "mmdd") End If Exit Sub ERR_HANDLER: MsgBox "現在のセルの値はシート名にできません。" End Sub

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

ヤリタイ事: 勤務表のA4が変わった事をうけてシート1のシート名を変更したい 手順: 勤務表シートのシート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  if target.address <> "$B$1" and target.address <> "$E$1" then exit sub  on error goto errhandle  worksheets("Sheet1").name = format(range("A4").value, "mm_dd")  exit sub errhandle:  msgbox "シート名を変更できません end sub 捕捉: 1.マクロを記入するのは勤務表なので間違えないこと 2.A4は計算式なので,今のマクロでは拾えないので間違えないこと  (どうしたらよかったのかは,回答したマクロを参考に。) 3.「シート名を変えられない」原因になるのは  a. Sheet1がそもそも準備されていない場合  b. 変更後のシート名が不適切な場合  c. 変更後のシート名が「既にある」場合  などが考えられるので,状況に見て適切に対処を考えること

yamagou
質問者

お礼

ありがとうございました。 指示通りして見ましたら、完成しました。 ところが、一度シート名を変更すた後、勤務表のB1、E1でカレンダーを変更し、シート名を変更しようとしても「シート名を変更できません」となり、変更できません。 私の説明不足で誠に申し訳なかったのですが、同じものを繰り返し変更して使いたいと思うのですが、この場合何か良い手立てはないものでしょうか? 一度変更をかけるとシート名が代わり、補足3、aの条件が満たせなくなるようです。 それと、未熟過ぎて申し訳ないのですが、最初は変更するシート側にマクロを記入するものと思い込んでいたので、あらかじめ用意してある31日分のシートにすべてコツコツとマクロをコピペして記述すれば、一ヶ月ぶんが出来ると思っていたのですが、一度に一ヶ月分変更できるような方法は無いものでしょうか? お手数をおかけしますが、今一度、お助け頂けないでしょうか? よろしく、お願いいたします。

  • excelist
  • ベストアンサー率56% (13/23)
回答No.1

いくつかの問題点があるようです。 まずWorksheet_Changeをどのシートに挿入しているかです。やりたい事から想像すると「勤務表」シートに挿入していると思われますのでその前提で以降話します。まずは次の1行に問題があります。 If Target.Address(False, False) = "勤務表!A4" Then Address関数の戻り値の記述が間違っているため、このIf文はFalseと判断されています。 If Target.Address(False, False) = "A4" Then でよいかと思います。 次にシート名ですが・・・「/」はシート名に使えないような気がします。format関数を用いて適当な文字列に変えてやる必要があるかと思います。(当方Excel2010でないのでウソついてるかも知れないです) ActiveSheet.Name = format(Range("勤務表!A4").Value,"mmdd")

yamagou
質問者

補足

早々ご回答ありがとうございます。 Worksheet_ChangeをSheet1に入れて、勤務表シートのA4の月日を呼び出して、Sheet1のシート名にしようとしています。 /はやはり、使えないようです。 関数で呼び出した値をシート名にすることは問題ないのでしょうか?

関連するQ&A

  • VBAでシート名を自動入力時のINDIRECT

    C1セルに日付を入れています。それがVBAで自動でシート名に入力されるようにしています。 例えば、「2014年 9月1日」と入れていると、シート名も「2014年 9月1日」となります。 そのようなシートを集計シートで値を合計していきたいと思っているのですが、INDIRECT関数を使って、シート名を参照しようとしてもエラーになってしまします。 例えば、集計シートのA1セルに、「2014年 9月1日」と入力しておいて、、「2014年 9月1日」シートのB1セルに「20」といれているとします。通常は、=INDIRECT(A1&"!B1")という関数を集計シートのA2セルにいれると、「20」と表示されますが、VBAでシート名を取得している場合はエラーになってしまいます。この場合、無理なのでしょうか? また、もう1件、VBAのシート名取得で、「2014年 9月1日」は問題ないのですが、9月の9の前に半角スペースがあるのでそれを消すと、実行時エラー’1004’:が表示されて、C3セルの表示が###となります。C3セルの列幅を広げると、 、「           2014年9月1日」このような表示になっています。しかし、スペースが先頭に入力されているわけではありません。、「2014年9月1日」というシート名は手入力でいれても問題ないのですが、VBAで自動で入れた場合、エラーになるのは、プログラムに問題があるのでしょうか?下記プログラムを入力しています。 If Target.Address = "$C$1" Then Sh.name = Target.Range("A1").Value End Sub すいませんが、よろしくお願いいたします。

  • セルの値をワークシート名にする(エクセル2013)

    インストラクターのネタ帳さんより http://www.relief.jp/itnote/archives/003382.php 下記「セルの値をワークシート名にする?Worksheet_Change」 を拝借し利用させていただこうと思いましたが ---------------------- Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "H1" Then ActiveSheet.Name = Range("H1").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のH1セルの値はシート名にできません。" End Sub ---------------------- はそのまま出来るのですが、 H1セルにデータの入力規則:リストを指定しますと エラーとなりシート名が変わりません sheet1のリストA1:A50をsheet2のH1セルにリスト表示させ その表示名をそのままシート名に出来ませんでしょうか? ---------------------- Sub copy Range("H1").Copy Range("P1") End Sub ---------------------- Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "P1" Then ActiveSheet.Name = Range("P1").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のP41セルの値はシート名にできません。" End Sub ---------------------- としてH1のセルをP1にコピーしたものを指定して試しましたがやはりエラーとなり うまくいきませんでした。 全くの素人で恐縮ですがよろしくお願いいたします

  • 自動で複数セルの内容をシート名にする

    今エクセル2013で、B5セルに「8」を入力して、C5セルには「月実績」と入力してあります。 B5セルはシートをコピーして月ごとに変更していきます。C5セルのほうも例えば「月生産数」等に変更して使用します。(つまり、B5もC5も両方内容を変更していきます。) このB5とC5のセルの内容をシート名に自動で変更したいのですが、どうすればよいでしょうか? たとえば上記の例だと、シート名が「8月生産数」になってくれればよい。 今とりあえずWorksheetに下記コードを記述していますが、これだとシート名が「8$C$5」となってしまい、C5を文字で認識してしまい、セルの内容がシート名になりませんでした。 どうすればよいでしょうか? また、記述場所は使っているシートのWorksheetにかきこめばよいでしょうか?(シート名を右クリックしてコードの表示ででてくる所に記述しています) VBAの事、あまり分からないままやっていますが、お願いいたします。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) On Error GoTo ERR: If Target.Cells(1, 1).Address = "$B$5" Then Me.Name = Target.Cells(1, 1) & "$C$5" End If Target.Cells(1, 1).Select Exit Sub ERR: MsgBox "その名前には変更出来ません。", vbCritical + vbOKOnly, "ERROR" Resume Next End Sub

  • 別のbookのシート名を自動に貼り付ける

    http://www2.odn.ne.jp/excel/waza/sheet.html#SEC8 参考にして、シート名をセルに表示させたいです。 参考book [s.xls]シート名はそれぞれa,b,c,とあるとします。 表示させたいbookは[x.xls] こちらのシート名はd,e,fとします。 x.xlsの各シートa1の欄に、s.xlsのシート名を自動で表示させたいです。 dのシートにaのシート名 eのシートにbのシート名 fのシートにcのシート名 2枚目のシートが変更できませんでした。 すべてaのシート名が表示されてしまいます。 =MID(CELL("filename",s.xls$A$1),FIND("]",CELL("filename",s.xls$A$1))+1,31) にしました。 よろしくお願いいたします。

  • 特定の文字を含むセル周辺を別のシートに表示させたい

    お世話になります。 Excel2002で次のことをやろうとしているのですが、良い方法が見つかりません。 特定の文字を含むセルと、その周辺の一部のセルを別のシートに表示させたい。 どのようにしたら良いかお教えください。 [元]のシートの"A1:E112"のセルに文字や日付、数値など色々入っています。 その中に"目的の文字"という文字を含んだ文字列が入っているセルがあります。 そのセルには、"目的の文字"の後ろに":変化する日付"が入っています。 つまり、次のようになっています。 "目的の文字:2015年10月23日"(日付は変化します) そして、このセルの位置はそのときによって"A15:C112"のセルの中で変化します。 このセルを含む周辺の一部のセルだけを[抽出]のシートに表示させたいのです。 表示させたいセル範囲は、"目的の文字"を含むセルの2行上から2列右までで、3行3列計9個のセルです。 画像の例では[元]のシートの"A35:C37"です。 可能であれば関数だけで解決したいのですが、そのような方法はあるでしょうか? 無理でしたらマクロで実行する方法はあるでしょうか。 よろしくお願いします。

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

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

  • セルと同じシート名のシートを探す

    vb初心者です。 よろしくお願いします。 シート名AのセルB3に入った文字と同じシート名を探させたいと思います。 例えば シートAのB3に"万円"と入力された場合、 "万円"シートをアクティブにするという感じです。 よろしくお願いします。

  • ExcelVBAで文字列編集後別シートのセルにコピーしたいのですが

    Excel2000を使用しています。作業中のブックのSheet1の後ろに別のファイルをコピーすることができました。そこから(コピーできたファイル)から文字列を編集してSheet1の特定のセルに貼り付けたいのですが、未熟者でできません。以下の操作をVBAマクロで実行したいのですが解る方教えてください。 (1)コピーしたファイルのA4セルにある文字列をMID(A4,6,10)で取り出しSheet1のB21セルに貼り付ける。(日付) (2)(1)が日付なのでそれから曜日を取得し、Sheet1のE21に表示する。 (3)コピーしたファイルのA5セルにある文字列をMID(A5,8,1)で取り出し(一桁の数字)1の時は福岡、2の時は佐賀、3の時は長崎、4の時は熊本、5の時は大分、6の時は宮崎、7の時は鹿児島、8の時は沖縄とSheet1のB24セルに表示する。 (4)コピーしたファイルのA6セルにある文字列をMID(A6,8,2)で取り出し(二桁までの数字)その後ろに"本"をつけてSheet1のB24セルに表示するB28に表示する。例)12本 (5)コピーしたファイルのA2セルにある文字列をMIDB(A2,20,6)で取り出し(時刻)Sheet1のE30セルに表示させる。 (6)コピーしたファイルのA12セルにある文字列をMID(A12,11,5)で取り出し(時刻)Sheet1のE34セルに表示させる。 (7)(6)の15分前の時刻をE36セルに表示させる。 よろしくお願いいたします。

  • シート名をセルと文字列たしたものから引く

    セル A1:H21 シート名:H21xxxx 作りたい関数: =countif(H21xxxx!G:G,"P-1") で、シートごとにA1に入っている値は異なりますが、H20、H19・・・などになります。 作りたい関数の中のH21の部分を関数で持ってきて、且つ文字列とあわせてシート名とし、範囲指定としたいのですが、どうすればよいでしょうか? よろしくお願い致します。

  • エクセルで参照する別シート名をセルに入力したい

    エクセルで参照する別シート名をセルに入力したいです。 (1) sheet2とsheet3にそれぞれA1:B10の表があります。    A列には氏名がB列には数値が入力してあります。    (同じ表で月度が違います。) (2) vlookup関数を使ってsheet1のA列に氏名を入力して対応する数値を    B列に求めたいです。 (3) この時、sheet1のC1に「sheet2」「sheet3」と入力することで    参照するシートを変えたいのですが、方法が解りません。 そもそも可能かどうかも解らず、悩んでいます。 ご教授お願いいたします。   

専門家に質問してみよう