• ベストアンサー

関数の引数の列番号のアルファベットを参照してくれる関数はありませんか?

関数の引数の列番号のアルファベットを参照してくれる関数はありませんか? 月次で入力している数字がありその右に前年比{=D4:J4/SUM('2009年度'!D4:J4)}を出すセルを設けてあります。今は10月まで入力されてますので11月から3月までは空欄でその右に前年比です。 現状、月末に入力するたびに前年比セル内をJ→k→l→mとアップデイトさせているのですが、これが自動でされるようにするにはどうすればよいですか?

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>月次で入力している数字がありその右に前年比{=D4:J4/SUM('2009年度'!D4:J4)}を出すセルを設けてあります。 分子の部分にSUM関数が抜けているように思いますが、未入力セルがあっても分子は空白セルを含む範囲を大きめに固定して選択しても問題ないので、ご質問のポイントは計算式の分母の数字のセル範囲を分子の入力されているセル範囲と同じ範囲に指定したいという意味なら分母の数式を以下のように変更してください(D4からD15セルに数値が入力されている場合)。 SUM(OFFSET('2009年度'!D4,0,0,1,COUNT(D4:D15))

take-r2d2
質問者

お礼

ご回答ありがとうございます。 教えていただいた関数を参考にしてなんとかうまくできました。 OFFSET関数をまだ理解できていないので勉強します。 ありがとうございました。

その他の回答 (3)

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

>アルファベットを参照してくれる関数はありませんか 列番号(記号だが番号と証するらしい)を問題にするより、もデータの入力済みの実情に応じて 足してくれるものを考えるのが正道と思う。 範囲を指定できるのは、OFFSET函数しかなく、可変にするのもこれが良い(列や行数字で決められるから) 後はセル範囲名をSUM函数の引数に使えるかもしれない。 ーーー 例データ B列ーH列(4月ー10月)の例に短縮化した。翌3月までに修正のこと。 B2より以下、以右の出るには数値のほかに文字列も可としている。空白があると個の式は使えない。 A1:I7 項目・月 4 5 6 7 8 9 項目1 1 a a a 1 2 項目2 2 3 5 a 2 12 項目3 5 6 7 a 3 21 項目4 5 6 9 a 4 24 項目5 2 a a 4 5 11 項目6 a a a a 6 6 ーー I列I2に式 =SUM(OFFSET($B$2,ROW(B2)-2,0,1,COUNTA(B2:H2))) と入れて下方向に式複写。結果は上記I列 ーーー 途中に空白セルがあっても、一番右列にあるデータ列まで捉えるのは、少し難しい式か、VBAでユーザー函数を定義する。 VBEで標準モジュールに Function migiretu(a) Application.Volatile migiretu = Range("I" & a.Row).End(xlToLeft).Column End Function 例データ(-は空白セル。左詰表示防止用)) A1:H7 項目・月 4 5 6 7 8 9 10 項目1 1 a a a 1 項目2 2 3 5 a 2 項目3 5 6 7 a 3 67 項目4 5 6 9 ー 4 項目5 2 a a ー 23 項目6 a a a ー ー 3 I列より右列例えばL2セルに =SUM(OFFSET($B$2,ROW(B2)-2,0,1,K2)) 下方向に式を複写。L2:L7 2 12 88 24 25 3

take-r2d2
質問者

お礼

ご回答ありがとうございました。 VBAは僕の知識ではまだ難しいですが、関数の考え方はよくわかりました。 ありがとうございます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>A7に社名、D7からO7までが4月から3月までの売上、P7に累計売上{=SUM(D7:O7)}、Q7に前年比{=P7/SUM('2009年度'!$D$7:J$7)}となっています。 上記のレイアウトならQ7セルに以下の数式を入力してください。 =P7/SUM(OFFSET('2009年度'!D7,0,0,1,COUNT(D7:O7))

take-r2d2
質問者

お礼

ご回答ありがとうございました。 一つ前にご回答いただいた方と同様参考にさせていただきうまく組むことができました。 助かりました。

回答No.1

>関数の引数の列番号のアルファベットを参照してくれる関数はありませんか? 意味不明。関係ありそうな関数を挙げてみる =ADDRESS(行番号,列番号,参照の型,参照形式,シート名) セルのアドレスを文字列で返す =INDIRECT(参照文字列,参照形式) 参照文字列を実際の参照(範囲)にする =COLUMN(範囲) 範囲の列番号を数値(or数列)で返す {=D4:J4/SUM('2009年度'!D4:J4)} なぜ配列数式? >月末に入力するたびに前年比セル内をJ→k→l→mとアップデイトさせているのですが アップデイトって「J→k→l→m」のことを指しているの?? 説明不足の上、言葉もわけわからんから、たたき台 =J4/SUM('2009年度'!$D4:J4)

take-r2d2
質問者

補足

説明不足ですいません。具体的には、 シートは、2つあり2010年と2009年があります。 A7に社名、D7からO7までが4月から3月までの売上、P7に累計売上{=SUM(D7:O7)}、Q7に前年比{=P7/SUM('2009年度'!$D$7:J$7)}となっています。 で、現在は4月から10月まで入力がされている為、引数がDからJとなっていますが、毎月単月の売上を入力した後、前年比セルの引数のアルファベットを修正しているわけです。 ※11月の売上が入力されたらJをKにする。12月の売上が入力されたらKをLにする。 このアルファベットの修正が単月売上が入力されると自動で更新されるようにしたいというのが今回の質問です。 宜しくお願いします。

関連するQ&A