プロが教える店舗&オフィスのセキュリティ対策術

次のような計算は出来るのでしょうか。

 | A | B | C |
----------------------
1| a1 | b1 | c1|
----------------------
2| a2 | b2 | c2|
----------------------
3| a3 | b3 | c3|
----------------------
 - - - - - - -
----------------------
n| an | bn | cn|

というときに
c1=a1+bn
c2=a2+b_n-1
c3=a3+b_n-2
cn=an+b1
という値がCの列に出るような操作があれば教えてください。

A 回答 (4件)

質問者の意図するところと違うかもしれませんが


例えば、B11がbnだとすると
C1に
=A1+OFFSET($B$11,1-ROW(B1:$B$11),0)
として、下にコピーします。
    • good
    • 0
この回答へのお礼

早速の回答有難うございます。

なんか合っているみたいです。出来ればこの式がどういうことをやっているのか解説してもらえるとありがたいです。

お礼日時:2005/04/12 19:36

すみません。


#1は、
=A1+OFFSET($B$11,1-ROWS(B1:$B$11),0)
に訂正します。
    • good
    • 0

例えばデータ数が11なら単純にROW関数だけの以下の式でOKです。



=A1+OFFSET($B$1,11-ROW(A1),0)
    • good
    • 0
この回答へのお礼

回答有難うございます。

お礼日時:2005/04/13 10:29

すみません、#2で訂正した式は間違えています。


=A1+OFFSET($B$11,1-ROWS($B$1:B1),0)
の間違いでした。

>この式がどういうことをやっているのか
OFFSET関数は、基準のセルからの相対的な位置のセルを求める関数です。なので、
OFFSET関数の部分で、
Akの時のBn-k+1を求めています。
OFFSET関数は、
OFFSET(基準,行数,列数[,高さ][,幅])
の様に指定します。高さと、幅は、基準と違う範囲を返す時のもので、[]は、省略できることを表します。例の場合は、省略されているので、基準のセルと同じ1個のセルを返すということです。
行数と列数は、基準のセルからの相対的な位置を表していて基準の位置を0,0としてプラスの時は、下右の位置を表しマイナスの時は、上左を表します。
例えば、B11の位置から、B1の位置を表すと
OFFSET(B11,-10,0)になります。
ROWSは、この間の相対位置を求めるのに使っています。
ROWSは、
ROWS(セル範囲)の様に指定して、その間の行数を求める関数です。
ROWS($B$1:B1)の様にすることで、
$の付いていない、今着目しているセルとB1の間のセルの行数を数えます。
例えば、C11のセルでは、
ROWS($B$1:B11)になって、この値は、11になり、
基準の位置が0なので、
1-ROWS($B$1:B11)
は、1-11で-10になります。
つまり、C11のセルの時にB1のセルの値を取り出します。
ROWSの替わりにROWを使うことができるのは、B1から始まっているからで、
ROWは指定したセル範囲の左上のセルの行番号を返します。(#1の場合はセルを範囲で指定している意味はありませんね<恥ずかし…)
1-ROW(B1:$B$11)つまり
1-ROW(B1)は、B1を基準とした行数を1から引いていることで、先に説明したのと同じB11からの相対位置になります。
ROWでなくROWSを使う意味は、ROWは、行の番号なので、
例えば、1行目に行を挿入した時にに、おかしくなるのを防ぐ意味があります。
色々恥ずかしい間違いをしてしまいました^^;
    • good
    • 0
この回答へのお礼

詳しい解説有難うございます。
これで、式の意味も、関数の使い方も分りました。

お礼日時:2005/04/13 10:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!