Excel 2010-後続の3か月に基づいてダイナミックレンジを合計する必要がある


2

特定の月の3か月前と3か月後のエントリのリストのダイナミックレンジを合計しようとしています。これを取得するには配列を使用する必要があると思いますが、必要なことを見つけることができません。

現在、Matrix形式で持っているものは次のとおりです。

ROW  |  COLUMN A  |  COLUMN B  |  COLUMN C  |  COLUMN D  |  COLUMN E
---  |  ------------------------------------------------------------
1    |  Username  |  StartMo   |  January   |  February  |  March
     |  ____________________________________________________________
2    |  User 1    |  March     |  1,000     |  1,500     |  1,000
3    |  User 2    |  April     |  2,000     |  1,000     |  1,500
4    |  User 3    |  April     |  1,000     |  1,750     |  1,000
  • 列Aのユーザー1〜10
  • 列Bの開始月
  • 列CMの過去1年間の月次データ
  • 行1全体のデータの月を示すヘッダー

必要なのは、列Aに必要なユーザーがいる場合は合計ですが、行1が開始月から3か月以内の場合のみです。

考え?データの写真を投稿したいのですが、私は新しいのでそれを許可しません。


質問にいくつかのサンプルデータを入力できますか?また、列CNを意味しますか?CMは11列のみです(1年ではありません)。
Gマン

@ G-Manの方がうまくいきますか?
トムF

たとえば、ユーザー1(行2)の場合、C2:G2(1月-6月)を合計し、ユーザー2(行3)の場合、C3:H3(1月-7月)を合計しますか?
Gマン

動的にスタート月別はい卿、
トム・F

誰かが利用できる場合は、この問題に関するヘルプを引き続き探しています。前もって感謝します。
トムF

回答:


2

行ごとに、その行のサブセットである範囲を合計します。これは、列Bの「開始月」によって決定されます。まず、範囲のテキストによる説明を取得し、公式に表現します。これを行うために、我々は、私が直接それをする方法を知っていません12までの番号、1月の名前を変換する必要がありますが、それはから月数を抽出するのは簡単です、日付、と私たちは変えることができます数字(月の日)を追加して、月名を日付に追加します。例えば、

  • 場合B2March、その後、
  • B2 & "1"でありMarch1
  • MONTH(B2 & "1")です3
  • お使いのバージョンのExcelでこれが機能しない場合は、を試してくださいMONTH(DATEVALUE(B2 & "1"))

OK、質問は月の月数 -3から月の数 +3 を合計するように求めます。たとえば、ユーザー2(行3)のB3「4月」(つまり4)の場合、1月(1)から7月(7)までの合計が必要です(4-3 = 1および4 + 3 = 7であるため)。ただし、問題があります。必要な7か月のすべてがシートにあることが保証されているわけではありません。ユーザー1(行2)B2は「3月」であるため、(前の年の)12月から6月が必要です。前年と翌年のデータは利用できないため、範囲を1月から6月に切り捨てます。これを行うには、開始月を1以上、終了月を12以下に強制します。

1つのモノリシック式でこれを行うと、実際には判読できなくなります。「ヘルパー列」を使用して中間値を保存する方がはるかに明確です。だから、設定

  • P2–に対応する月番号B2
    =MONTH(B2 & "1")
  • Q2 –範囲の開始月:
    =MAX(P2-3, 1)
  • R2 –範囲の終了月:
    =MIN(P2+3, 12)

選択したセルを強調表示することは、巧妙なトリックであり、実行したいことを実行していることを確認するのに役立ちます。の式で条件付き書式を設定する

=AND((COLUMN())-2>=$Q2, (COLUMN()-2)<=$R2)

データマトリックスでは、次のようになります。

部分的な答え (画像は、それ自体の大きなコピーへのリンクです。)

Excelでダイナミックレンジを生成するための優れたツールは次のOFFSET関数です。

OFFSET(参照、[ 高さ ]、[  ])

これは、他のセルに対する相対的な位置によって、セルの長方形の領域(単一のセル、つまり1×1の長方形、場合によってはそれより大きい)を識別します。たとえばOFFSET(B2, 0, 1, , 6)、範囲を識別するC2:H2ため、

  • セルからB2、0行下に移動し、1列右に移動するとC2
  • 高さのデフォルトは1なので、範囲は完全に行2にあります。
  • 幅6: 、C2D2E2F2G2およびH2、またはC2:H2短いため、6列です。

範囲の幅は、単に終了列番号から開始列番号を引いたものに1を加えたものです。したがって、求める結果は単純に

=SUM(OFFSET(B2, 0, Q2, , R2-Q2+1))

そして、それをColumnに入れることができますO

完全な答え

上記はテキスト形式であるため、コピーして貼り付けることができます。

Username StartMo January February March April May June July August September October November December The Answer Andy March 102 202 402 1002 2002 4002 10002 20002 40002 100002 200002 400002 =SUM(OFFSET(B2,0,Q2,,R2-Q2+1)) =MONTH(B2&"1") =MAX(P2-3,1) =MIN(P2+3,12) Bob April 103 203 403 1003 2003 4003 10003 20003 40003 100003 200003 400003 =SUM(OFFSET(B3,0,Q3,,R3-Q3+1)) =MONTH(B3&"1") =MAX(P3-3,1) =MIN(P3+3,12) Charlie April 104 204 404 1004 2004 4004 10004 20004 40004 100004 200004 400004 =SUM(OFFSET(B4,0,Q4,,R4-Q4+1)) =MONTH(B4&"1") =MAX(P4-3,1) =MIN(P4+3,12)

テキストとしてWordに貼り付けてから、コピーしてExcelに貼り付ける必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.