エクセル関数で行を挿入した時にADDRESS関数の行番号を変える方法とは?

このQ&Aのポイント
  • エクセルで収入と支出と利益を計算する単純なシートで、数年に渡る月次のデータ(sheet2)から、sheet1で指定した特定の期間の3ヶ月の収入や支出を検索として合計をする関数を作成しました。
  • SUM関数とINDIRECT関数、ADDRESS関数、MATCH関数を組み合わせていますが、挿入や削除によりADDRESS関数の行番号が自動的に変わるようにする方法はありますか?
  • また、より簡単で使いやすい関数があれば教えていただけると助かります。
回答を見る
  • ベストアンサー

エクセル関数で、行を挿入した時にADDRESS関数の行番号を変える方法を教えてください

エクセルで収入と支出と利益を計算する単純なシートで、数年に渡る月次のデータ(sheet2)から、sheet1で指定した特定の期間の3ヶ月の収入や支出を検索として合計をする関数を作成しました(sheet2の右の方の罫線の箇所)。 SUM関数とINDIRECT関数、ADDRESS関数、MATCH関数を組み合わせているのですが、この状態で例えば収入(2)の後ろに収入(3)を挿入しようとすると、ADDRESS関数の行番号(ADDRESS(7,MATCH~)の数字の7のところ) が自動的に8に変わらないので、都度関数を修正しなければなりません。行を挿入したり削除したりしたら、ADDRESS関数の行番号も増えたり減ったりするようにできる方法はないでしょうか。 もしくは、そもそももっと簡単で使いやすい関数はないでしょうか。 教えていただけるととても助かります。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.4

No.3ですが画像がちょっと見づらいですね。 表の作りはB列からJ列の9列に2009年1月~2009年9月のデータ E~G列(4~6月)は非表示 L列、M列、N列でそれぞれ1~3月、4~6月、7~9月の集計 L3の式は =SUMPRODUCT(($B$1:$J$1>=L$1)*($B$2:$J$2<=L$2)*($B3:$J3)) です(以下説明) 自分自身のセルと同じ行のB列からJ列のうち B1:J1が自分自身のセルの1行目以上、かつ B2:J2が自分自身のセルの2行目以下、であるセルの値を合計 絶対参照と相対参照が混ざっていますので$をつける場所を 間違えないように注意してください。 その代わり縦でも横でもコピー&ペースト可能です。 (図中黄色の範囲は全てL3の式を複写したものです)

naokiinada
質問者

お礼

本当に丁寧にありがとうございます! さっそく試してみますが、上手くいきそうな気がします。 結果はまたご報告させて頂きます。

naokiinada
質問者

補足

すべて上手くいきました。本当にありがとうございました!!

その他の回答 (3)

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

縦軸に科目があって、横軸に月毎のデータがあって ヘッダ行は1行目が月初日、2行目が月末日 実際のデータは3行目以降に入っている 集計列のヘッダは1行目が期首日付、2行目が期末日付 同じ行のデータのみを集計する ということですか。 であればSUMPRODUCTを試してみてください。 画像をつけます。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

すみません。再度補足要求です。 >2009/1/1から3/31の3ヶ月間の、5行目の収入(1)の集計の場合 「2009/1/1から3/31の3ヶ月間の集計」であれば、 Sheet2から該当する期間のレコードを探して それを集計、ということになるわけですから 行自体は指定した条件によって変動するはずです。 「5行目」と行を固定する意味がわかりません。 それと収入(1)の(1)とは何でしょうか? 収入の列が複数あるということでしょうか? 折角補足いただいたのですが、収支表の構成がイメージできません。 もう少し具体的に収支表の構成を A列が何の項目でどんなデータが入っている(具体例:○○) B列が何の項目でどんなデータが入っている(具体例:○○) C列は… で、集計したい列はどの列 のように記述していただけないでしょうか。

naokiinada
質問者

補足

説明不足でお手数をおかけします… 5行目としたのはあくまで例であって、私の作成している表では、収入と支出で全部で100項目(100行)はあります。しかも、案件によって、項目(行)が追加されたり削除されたりします。 もう少し具体的に申し上げますと、 A列には収入と支出の科目名(例:賃料、水光熱費等)があり、B列以降は、各月の各科目の金額が入力されています。B列の1行目には、Sheet1から引用した2008/1/1が入力されており、C列1行目には、次で説明するB列2行目の日付+1として、2008/2/1となり、D列は2008/3/1~と5年間続きます。2行目には1行目の日付にEOMONTH関数を使って、B列には2008/1/31、C列には2008/2/28~と、1行目の日付の月末の日付が5年間入力されています。 そして、5年間の収支表の右側には、Sheet1で指定した年度の第1期、2期、3期、4期の3ヶ月毎のデータを集計する表があります。 例えば、BA列の1行目にはsheet1から引用した2009/1/1、2行目には同じくsheet1から引用した2009/3/31とあり、3行目以下には、左側の各月の収支表から集計した2009年1月から3月の第1期の3ヶ月(3つのセルの)合計の数字が反映されます。BB列の1行目は4/1、2行目は6/30で、3行目以下には同じく第2期の3ヶ月合計の各収入・支出の数字が反映されます。毎月の収支表と集計する表は、行が平行になっています(2009年1月の賃料の数字が5行目なら、2009年1月~3月の賃料の合計を集計するセルも、5行目です)。これでわかりますでしょうか。 EXCELのシートが貼り付けられれば一目瞭然なのですが… 科目を増やしたり減らしたりするために、行を挿入したり削除したりもするのですが、そうするとADDRESS関数の行数が変わらないので、集計表で集計する数字が変わってしまうのは質問に記載している通りです。 よくありそうな集計シートですので、もっと単純な方法があるのではないかと思っています。よろしくお願いいたします。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

・Sheet1での期間指定方法 年、月は別々のセルなのか? ○○年□月~○○年×月のように「期間」で指定するのか? ○○年□月のように単月で指定してそこから3ヶ月(前?後?)を計算するのか? など。 ・Sheet2のデータの項目とできれば具体的なデータの例 例えば2009年9月が「200909」という数値で入っているのか? 「2009年9月」という文字列で入っているのか? 「2009」と「9」という数値で別々のセルに入っているのか? など。 ・今、SUM関数、INDIRECT関数、ADDRESS関数、MATCH関数をどう組み合わせているのか? ・使っているExcelのバージョン(2007かそれ以前か) を補足して下さい。 何となく質問を読んだ限りでは、SUMIFやSUMPRODUCTを 使ったほうがよさそうな気がしたのですが。

naokiinada
質問者

補足

早速のご回答ありがとうございます。エクセルファイルを添付しようとしたのですが、できないようで、時間切れになってしまいました。中途半端な質問になってしまい申し訳ございません。 Excelのバージョンは2003です。 sheet1には、入力日の始期(例2008/1/1)と、集計したい年度の期(例 第1期2009/1/1、第1期終期2009/3/31、第2期始期2009/4/1~第4期終期2009/12/31)の日付をセルに手入力しています。 sheet2には、sheet1を受けて、EOMONTH関数を使って、始期から5年分の毎月の収支表が作成されます。収入と支出は手入力します。そして、収支表と行を揃える形で、収支表の右側に、集計したい期(3ヶ月毎)のデータを合計して、第1期から第4期までのデータが表示されるといったものです。 そこで使っている関数は以下のようなものです(2009/1/1から3/31の3ヶ月間の、5行目の収入(1)の集計の場合)。 SUM(INDIRECT(ADDRESS(5,MATCH(検査値:2009/1/1,検査範囲:収支表の日付))):INDIRECT(ADDRESS(5,MATCH(検査値:2009/3/31,検査範囲:収支表の日付))) 要は、sheet1で集計したい日付を指定すれば、5年間のデータから該当の期日のデータの合計を自動的に集計するようにするものです。 SUM関数だけでは、集計したい期が変わる度に、都度合計するセル範囲を変更しなければならないので。 よろしくお願いいたします。

関連するQ&A

  • EXCEL行挿入・行削除しても正しく集計する方法

    例えばSUM関数で、1~10行目までが明細行で、11行目に合計行がある場合、明細の途中で1行挿入しても、自動的に集計範囲が変わってくれますが、最終明細行の下に行挿入した場合、集計範囲が変わってくれません。  (1)SUM(C1:C10) → 明細途中に1行挿入 → SUM(C1:C11)  (2)SUM(C1:C10) → 明細最後に1行挿入 → SUM(C1:C10) (2)の場合でも、全明細行集計するようにする方法(関数)があれば教えてください。(Office365使用) よろしくお願いします。

  • excel「行の挿入」するとなぜか最終行に挿入されてしまう

    昨日、 ”excel2000の表で、ふつうにただ1行挿入したいだけなのですが、「行の挿入」を選ぶと 「データの消失を防ぐ為、空白でないセルをワークシートの外にシフトすることは出来ません」 とポップアップが出て、操作できません。” という質問をし、 ”全ての行を使い切ってしまっている、あるいは最終行(65536行目)のどこかのセルにデータが入っている。そのデータを消せばよい。” と教えて頂き、確認したところ最終行まで罫線がびっしり引かれていることに気付き、そんなにいらないので400行目以降の罫線はすべてクリアーで消去しました。 それで一件落着と思ったのですが、その後1行 行(罫線)を挿入すると、なぜか途中を通り越して最終行に罫線がはみ出てしまい、しばらくしてもう一行挿入しようとするとまた 「データの消失を防ぐ為、空白でないセルをワークシートの外にシフトすることは出来ません」 となってしまいます。私は400行目以内ですべて作業を完結させたいのに・・・。 どうすればよろしいでしょうか。

  • EXCEL2003で行や列を挿入した時・・・

    EXCEL2003で行や列を挿入した、書式も自動的に 上の行や左の行のものが適用されますよね。 その時、SUM関数などはどうでしたか? 列を挿入した時は、挿入後にコピーをしなくてはならないかと 思いますが、行を挿入した時は 上のSUM関数が既に入ってたことがあるように思うんですが、 入らないときもあるので、どうなのかなと思いまして・・・(^_^;) 行でも列でも挿入後に上や隣のセルの書式が適用されるように SUM関数も入ってたりはしないのでしたか? わかりにくい質問ですみません。。。

  • エクセル関数の設定方法を教えてください。

    エクセル関数の設定方法を教えてください。 写真のようにこの行を挿入します。 しかし、挿入すると、sum関数がずれていってしまいます。 sum( L6:L20)と埋め込んであるのに、挿入すると、上の行にスペースができます。この行に、同じような項目を加えます。そうすると、sum( L5:L19)になります。L19をL20のまま残したいのですが、どうやればいいんですか?$を使えばいいんですか?

  • 【エクセル】 行番号を変数とする方法について

    下表のようなデータがあったとします。 A B C D 1 2 TEST 3 4 5 合計 100 6 <目的>ある文字列が含まれる行番号以下の範囲を指定して、VLOOKUP関数を使用。       ある文字列が含まれるセル行番号は、毎回異なる。 <具体例> 1) MATCH関数で、「TEST」という文字が含まれる行番号を取得     この場合「2」 2) VLOOKUP関数で VLOOKUP("合計",A2:D5,2false) というように   MATCH関数で得た行番号を他の関数に組み込みたいです。     どなたか、良い方法を教えて頂けないでしょうか? よろしくお願い致します。

  • エクセルで行を挿入すると式が・・・

    シートを2枚使っています。 シート2にIF関数を使用して、 @IF(Sheet1:A1=”A”,”OK”,””)という式を入力しています。 ここで、シート1の1行目を挿入すると、 式も自動的にA2に変更されてしまいます。 行を挿入しても必ず1行目のA1を参照してほしいのですが、どうすればよいのでしょうか? 新しく入力するときは、行を挿入してシート1のA1に入力します。 絶対セルや範囲名を設定してもうまくいきませんでした・・・。 よろしくお願いします。

  • エクセルの行挿入の際の計算式について

    いろいろ探したのですが、答えを見つけられずにいます。 良かったら教えてください。よろしくお願いしますm(_ _)m 。 エクセルで、1行目から10行目まで関数の数式(例えばSUM、IFなど)が入力されているとき、7行目などで行挿入をした際、その関数が他の行と同じように、挿入された行にも自動で反映するようにすることはできるのでしょうか?? デフォルトではできない・・・ですよね?私はできないように思うのですが。 たくさん数式が入っている表ですと、ひとつひとつ数式コピーを加えていくのが手間なもので・・・何か良い方法や設定があればご伝授お願いいたします。 分かりにくい文章ですみません。

  • エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ

    エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてください。 sheet1を印刷用ページ、sheet2をデータ用ページとしています。 sheet2は頻繁に追加や削除をするのですが、単純な =sheet1!A1 ですと、 sheet2に追加してもsheet1に追加されたデータが反映されない。 sheet2の行を1つでも削除するとsheet1のその行は#REF!というエラーに。 という状態です。下記内容に対応できる関数はあるでしょうか。 sheet2がこのような時 行  A あ B い C う D え sheet2Dに「お」を挿入すると sheet1がこのようになるように。 行  A あ B い C う D お E え また、B行を削除したらsheet1が 行  A あ B う C え となるように。 そして、可能ならばコピーのドラッグで複製できるようにしたいのですが・・・ 条件が色々ありますが、よろしくお願いします。

  • マクロにてHYPERLINKのアドレスの取得方法を教えてください。

    マクロにてHYPERLINKのアドレスの取得方法を教えてください。 HYPERLINK関数を駆使してリンクを作っています。 =HYPERLINK(CELL("address",INDEX([○○○.xls]△△△シート!$1:$65536,MATCH("文字列",[○○○.xls]△△△シート!$B:$B,),MATCH("文字列",[○○○.xls]△△△シート!4:4,))),表示文字) という感じで別Excelファイルの行と列をMATCH関数を使いアドレスを作成しています。 出来たセルにマウスカーソルを持っていくと [○○○.xls]△△△シート!$AJ$114 アドレスが表示されます。 クリックするとちゃんと飛べます。 アドレスの表示を調べてみたところ Range("A1").Hyperlinks(1).Address というように記述する事で取得出来ると書かれていたので早速試してみたのですが インデックスが有効範囲にありません。と表示されてしまいます。 アドレスを取得するにはどうしたらいいのでしょうか?

  • SUM関数、行挿入時に自動更新する?しない?

    excel2007を使用しています。 今、例えばA1からA10に数値が入っているとして、11行目に合計をとりたいときは、A11にsum関数でsum(A1:A10)と入力しますよね。 このとき、10行目と11行目の間に行挿入して明細が1個増えたとします。合計を入れた数式は1行下の12行目に移動し11行目に任意の数値を入力します。すると、sum関数はsum(A1:A11)に自動更新されますか?それとも、sum(A1:A10)のままですか? 実はこれについて、自動更新するときとしないときとがあるようなのですが、どういうときに自動更新されて、どういうときに自動更新されないのかがわからず困っております。 色々試しているのですが、データがA1からA10まで連続的に入っているときは更新されます。ところが、A1,A4,A10などととびとびで入っているときは更新されません。しかし、とびとびでも、A1からA6とA9,A10に数値を入力したときは更新されました。また、A2,A4,A6,A8と規則的に1ぎょうおきにに入っているときも更新されました。 他にもいろいろと試してみましたが、どんなときに自動更新され、どんなときに自動更新されないのか、規則性が見えてきません。。。 どなたかおわかりになる方がいらしたら、教えていただければと思います。 よろしくお願い致します。

専門家に質問してみよう