+++++++ も く じ ++++++++
1.文字列や数字のコピー
2.関数のコピー
3.形式を選択して貼り付け
4.セルの相対参照と絶対参照
+++++++++++++++++++++
今回は、305行目までのセルに関数をセットします。 三四郎のブック「家計簿.jsd」を開いてください。
例えば、一太郎で文字のコピーをすると、一度の貼り付け操作ではコピーした内容が一度だけ貼り付けられます。三四郎では、貼り付け先のセルの選択の仕方によって、多くのセルに同じ内容を貼り付けられます。
[C6]に「外食」という文字があります。もし、[C7]から[C12]まで、「外食」という文字を入力したいとします。操作としては、
1) [C6]を左クリックしてセルを選択します。
2) コピーを実行します。
メニューで「編集」→「コピー」
または、右クリックで「コピー」
または、ツールボックスで「コピー」
3) [C7]を左クリックし、そのまま[C12]まで滑らせて範囲を選択。
4) 貼り付けを実行。
メニューで「編集」→「貼り付け」
または、右クリックで「貼り付け」
または、ツールボックスで「貼り付け」
この操作で、6つのセルに一度にコピーできました。
さて、説明のためにコピーしていただきましたが、実際にはこのコピーは不要なので、「編集」→「取消」で元に戻しておいてください。[C6]がコピーモードのままですが、ShiftキーとEscキーを同時に押すことで解除できます。
この要領で、累計の関数を305行目までセットしてみましょう。[F7]に、
=If(IsBlank(D7) AND IsBlank(E7),,Sum(F6,D7,-E7))
という式が入っています。
[F7]をコピーします。[F6]から[F305]までを選択して貼り付けます。[F6]には修正前の関数が入っていました。そこで、新しい関数で上書きしたのです。
ここで、ちょっと気をつけてほしいのですが、[F7]に、
=If(IsBlank(D7) AND IsBlank(E7),,Sum(F6,D7,-E7))
となっていた関数が、[F8]では
=If(IsBlank(D8) AND IsBlank(E8),,Sum(F7,D8,-E8))
と、自動的にセル座標が補正されています。
三四郎だけでなく、Excelにおいても当たり前の機能なのですが、関数が自動的に補正されるのはとてもありがたく便利です。
貼り付けをする際、「形式を選択して貼り付け」というコマンドに気がついたでしょうか。
ふつうに貼り付けると、コピー元のセルの内容ばかりか、そのセルに付随する罫線も書式もすべてを貼り付けてしまいます。しかし、時には、書式や罫線を無視し、セルの内容だけを貼り付けたいこともあるでしょう。そんなとき、このコマンドを実行します。「罫線コピー」のチェックをはずすと、罫線はコピーされません。
また、関数を貼り付ける際、式ではなく、計算結果を貼り付けたいこともあります。たとえば、[F6]をコピーして他のセルへ貼り付けると、式が貼り付けられますが、計算結果の「152325」を貼り付けたいなら、「形式を選択して貼り付け」で「値」をチェックします。
関数の入ったセルをコピーすると、セル座標が自動補正されます。とってもありがたいこの機能、邪魔になることもあります。[B6]に曜日の関数
=If(IsBlank(A6),, Mid("日月火水木金土",DayOfWeek(E1 & String(A6) & "日"),1) )
が入っています。
これを、[B7]にコピーしてください。そして、[A7]に「4」と入力してみてください。「!引数不正!」というエラーがでました。これは、なぜでしょう?
[B7]には
=If(IsBlank(A7),, Mid("日月火水木金土",DayOfWeek(E2 & String(A7) & "日"),1) )
とあります。
問題は、「E2」なのです。ここは、[E1]の「2001年1月」という文字列を参照すべきなのに、セル座標の自動補正によって置き換えられたのですが、ここだけは置き換えてほしくないです。
関数がセル座標を参照するとき、自分から見ての相対位置を問題にする場合と、どこから参照しようと定まった位置を参照したいときとがあります。前者を「相対参照」、後者を「絶対参照」といいます。絶対参照には、セル座標に「$」をつけます。
すなわち、[B6]は
=If(IsBlank(A6),, Mid("日月火水木金土",DayOfWeek($E$1 & String(A6) & "日"),1) )
とすべきなのです。
[B6]をこのように修正した後、[B6]を[B7]から[B305]までコピーしてください。どのセルを見ても、「$E$1」のままですね。
* * *
それでは、ブックを保存しておいてください。