各シートのE1セルには次の式を入力して、そのシートのシート名を表示させます。
=TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10))
次にシート1を除いたすべてのシートのB2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(OR(A2="",COUNTIF(INDIRECT("Sheet"&RIGHT($E$1,1)-1&"!A:A"),A2)=0),"",VLOOKUP(A2,INDIRECT("Sheet"&RIGHT($E$1,1)-1&"!A:D"),4,0))
このようにすることで一つ前のシート番号のD列の値が表示されるようになります。シートが幾つ増加しても対応は同じです。
お礼
エラーを自分なりに調べたりしてもよく分からなかったので、 色んな事例とmo2yakkoさんの文を参考にしなら、とりあえずですが 日付を入力して実行ボタンを押すとシートが挿入されるように作りました。 やっとです(o^∇^o) Sub Macro1() Dim strSheetName As String Worksheets("元本").Copy after:=Worksheets("入力画面") ActiveSheet.Name = Worksheets("入力画面").Range("C4") Worksheets("入力画面").Range("C4").ClearContents End Sub まだまだ(1)の部分だけです。 (2)の部分を組み入れていきたいのですが、エラーになってしまいます。 例にあげた様式と実際の様式が違うので、エラーになっているのかもしれませんね。 実際はB列~J列が結合されてて、『A君・B君』等の名前のは先頭が5行目からの入力になります。 前回までの点数合計がK列です。 追伸:いったんこの質問を閉めて、分からない部分毎に質問を立ち上げていったほうがいいですか? mo2yakkoさんにばかり質問をしている状態なので申し訳なく思っています。
補足
丁寧な回答、有難うございます。 教えて頂いたことを参考にしてやってみました。 1.『入力画面』というシートを作成 2.念のために参照画面の通りに入力するような様式を作りました。 3.コマンドボタンを作成 4.「コードの表示」→「'処理開始ボタンをクリック・・・・・シート名を取得する End Sub」 までを全てコピペ 5.「実行」 以上の手順で作業してみましたが、 『実行時エラー '9' インデックスが有効範囲にありません。』 というエラーがでました。 古い日付のシートが無いから?と思って、一番古い日付の空のシートを作成してみましたが 同じエラーが帰って来ました。 何が間違っているんでしょうか・・・