• ベストアンサー

エクセルの参照について

こんにちは。 みなさんのお知恵をお借りしたく、質問させていただきました。 エクセルで月別のシートを作っているのですが、 当月シートに前月のデータを参照させたいと思っています。 例えば11月セルB1に10月のA1のデータをかえすといったように。 もちろん10月シートを指定すればよいのでしょうが、 それではシート毎に個別に参照を設定しなければならず、 ちょっと面倒だなと感じております。 上記の方法では11月のシートをコピーして12月のシートを作成しても 前月参照セルは10月のシートを参照してしまうことになります。 常に前月のシートを参照するためにはどうすればよいのでしょうか? シートを相対参照すればよいのかと思いますが、その方法がわかりません。 勉強不足で申し訳ありませんが、ご存知の方いらっしゃいましたら教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

シート名が、シートコピーをする度に変わらないといけないのなら、 絶えずどこかで変えてやらないと関数では難しいと思います。 私が思った例は、 シートコピーをした際にA1に絶えずその月数を入れてやれば 下記式で前月のシートを参照できます。 たとえばA1に"11"と入った11月のシートを コピーして11月(2)を作ります。 そのシートのA1に"12"と入れてやれば10月では無く 11月のシートデータを参照します。 そして、11月(2)のシート名を12月とすれば、 次の1月になって12月シートをコピーしたときも 12月(2)のA1に"1"と入れ変えるだけで 参照先を12月のシートに出来ます。 =INDIRECT("'"&IF(A1=1,12,A1-1)&"月'!C2")

eadgbe
質問者

お礼

こんばんは。早々のご回答ありがとうございます。 教えていただいたとおり、入力してみると希望通りの結果に! 本当に助かりました。 今まで全くINDIRECT関数を使ったことがなかったのですが (というより、どう使えばいいのかわからなかったです) とても勉強になりました。 ありがとうございます! まだINDIRECT関数がぼんやりわかった位なので もっと活用できるように勉強させていただきます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

関数におけるシートの指定は (1)名前 によるだけです。 VBAではSheets(1)やActivesheetなどの指定がありますが、関数では 名前しかない。 ーー そこで前月を算出できるのは (1)シート名に数字がある命名の場合 シート名の月の部分は、前月はN-1です (2)シート名の番号に頼れない命名の場合はそれがわかる表が必要です。 ーー どちらもINDIRECT関数しかないと思う(ユーザー関数を除いて)。 ーー (1)の場合A1に月数があるとして A1 ーーA2ーーーーーーD2(繰越残・式)ーー D2の値ーーー D20(末算) 11 繰越残ーーーー略 ------------------------ --123-----111 12 繰越残----=INDIRECT("Sheet"&(A1-11)&"!D20")--111-----222 1 繰越残----=INDIRECT("Sheet"&(A1-11+12)&"!D20")--222-----333 2 繰越残----=INDIRECT("Sheet"&(A1-11+12)&"!D20")--333-----444 3 繰越残----=INDIRECT("Sheet"&(A1-11+12)&"!D20")--444-----555 4 繰越残----=INDIRECT("Sheet"&(A1-11+12)&"!D20")--555-----666 以下略。 こういうのでコピーできたといえるのでしょうか。代替は前月のD2の式をコピーしてOKですが、12->1でわずかな手直しが必要です。 ーーー 11-翌10月の各月のシート名を「あ、い、う、え、お、・・」とした場合 表をSheet6のI1:I12に、1月ずらしでもち い う え お か き く け こ さ し あ と持った場合 12月のシートのD2には =INDIRECT(INDEX(Sheet6!$I$1:$I$12,A1,1)&"!D20") と入れると、上記例と同じにできる。今度はシート間同一場所セルへコピーだけでできるよう。 ーー ちょっと複雑になったのですが、こういうことになりませんか。

eadgbe
質問者

お礼

こんばんは。 とても詳しい説明ありがとうございます。 わかりやすくて、INDIRECT関数の意味が理解できました。 教えていただいたことを活かして他にも色々できそうで嬉しいです。 どうもありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >それではシート毎に個別に参照を設定しなければならず、ちょっと面倒だなと感じております。 以下のような数式は結構知られていますし、かつて、手前のシートの番号を取るという、マクロ関数を使ったワザもあるのですが……。そちらは、一応、ExcelのVersion しだいといことになりそうです。 =INDIRECT(MOD(SUBSTITUTE(MID(CELL("filename",A1),FIND("]",CELL("filename"))+1,3),"月","")+10,12)+1&"月!A1")

eadgbe
質問者

お礼

こんばんは。 ご回答ありがとうございます。 すみません、勉強不足でせっかくおしえていただいた式を まだ理解できていません。 これから考えさせてもらいますね。 ありがとうございました

関連するQ&A

  • エクセル 左隣のシートを参照

    恐れ入りますが御教示ください。 エクセルで新しく次のような表を作りました。 シート名 4月 B列 前月残高 C列 当月増 D列 当月減 E列 当月残高 E列には例えば3行目なら=B3+C3-D3という式が入っています。 次に、このシートを右隣にコピーして、シート名を5月に変えます。 お伺いしたいのは、4月の残高を5月の前月残高に写す、そして6月以降を作る時、この作業(左隣のシートの当月残高を前月残高に写す)を自動化する方法です。 よろしくお願い致します。

  • エクセル関数の他のシート参照について

    エクセル2000についてお尋ねします。どんな関数でもいいのですが、例えば「INDIRECT」関数で「sheet5」のD20セルに「INDIRECT($H$13"月!D3")] という関数を入れました。「sheet1」から「sheet4」には1月から4がつのデータがあります。「sheet5」のH13セルに1と入れたら。「sheet5」のD20セルに1月のD3セルが出るようになっています。ところが、この関数を相対コピーできません。"月!D3"が文字列なので?オートフィルでコピーできず一つ一つ入力しなくてはいけません。他に良い方法はありませんか?

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • エクセルで前月データを簡単にコピーする方法

    エクセルで職場のユニフォームの在庫管理表作っています。 面倒ですが、ユニフォームの種類ごとにコード番号を付けて、sumifを使った表を作ってみました。 月初有高、当月仕入れ、当月残高が分かるようにしました。 月初有高の所に前月の表の当月残高を簡単に入れたいのですが、一つずつセルに式を入れたり(一つに式を入れて後コピーしても相対参照になりませんでした)、コピーをするのは時間がかかりすぎるので、どうしたら良いのか困っています。 月初有高の所に前月の当月残高を反映させる良い方法はないでしょうか? そもそもエクセルが苦手で知識があまりありません。 ネットでどの方法が良いかいろいろ見てみましたが、マクロとか私には無理そうな方法を見かけました。 エクセル初心者にもできそうな方法はないでしょうか? よろしくお願いします。

  • エクセルで交差点を参照する

    あるセルに例えば、”C12”セルと同じ内容を常に表示したければ、”=C12”とすればよいです。しかし、参照したいデータが常にC12にない場合はどうでしょうか?あるときは、”B11”、またあるときは”D09”にあったりと。ただこの場合でも、参照したいデータは常に”りんご”と入力された行と”10月”と入力された列が交わるセルにあります。このセルを常に参照させる方法はあるのでしょうか?マクロを使っても構いません。

  • excelの参照について

    excelの参照について 初心者です。 1枚目のシートの情報を2枚目以降のシートに参照させたいのですが それぞれのシートの同じセルに シート2枚目には A1のセルを参照させ シート3枚目には A2のセル シート4枚目には A3のセル・・・ という具合にシートが進む毎に一つずつ下段のセルを参照させたいのですが シート1枚ごとに手で一つずつ入力するのではなく なにか一括して入力する方法はありますでしょうか? よろしくお願い致します。

  • エクセル別シートでの参照

    質問の検索をせずに質問を行っているので、重複している質問が多いかもしれませんが・・ お知恵を拝借頂ければ幸いです。 シート1のA1にシート2のあるセル(例えば='シート2'!$C1)を参照させており、 シート1のA2にシート2のC4、 シート1のA3にシート2のC7・・・ と常に別シートの3つ下のセルを参照したい場合は、どのような関数を用いれば よろしいのでしょうか?

  • EXCELのシート名を自動参照

    EXCELのワークシートの名称を、例えばA1セル内にある文字列を参照させて変更させるマクロは可能でしょうか? 具体的には ・日々使用している様式(ワークシート)をコピー ・コピーしたシートへ、他のファイルからデータを貼付 ・貼付けたデータのひとつのセルを参照してワークシートの名前を変更 といった作業をマクロで一発処理しようと考えています。 参照させるデータはロットナンバーですので、毎回異なります(セルは同一です)。 単純にマクロの記録で該当セルをコピーした後、名前タブへ貼り付けてもうまくいきませんでした。

  • エクセルのセル参照とデータ並べ替え

    エクセルで、データを並べ替え後、セル参照の式を作ります。そして、元の通りデータを並べ替えます。そうすると、参照のセルが自動で変わってしまいます。絶対参照にしても、相対参照にしても、思い通りの結果が得られません。 どうしたらよいか簡単な方法を教えてください!!

  • セルの参照について

    いつもお世話になっています。 セールの参照でシート1に縦ならびにシート2のデータを横順序で読み込んでいきたいのですが、セルにはどのように入力すればよろしいでしょうか? シート1でA1をJ10までドラッグするとシート2のA1~A10が読み込まれるような式です・・・。 普通にシート1のA1に「=Sheet2!A1」といれてドラッグすると下にドラッグするとシート2も下に相対参照してしまい・・・。数のみを絶対参照にアルファベット(列)を相対参照にすることはできるのでしょうか? よろしくお願いします・・・。

専門家に質問してみよう