こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで数式のコピーをしたい…

エクセルで表を書いているのですが、同じ数値の入った表をもう一つ作りたいため、
シートAの数値をコピーしてシートBの表にペーストしたところ、
入力してあった数式の内容が違うものになってしまい困っています。
「形式を選択して貼り付け」で「数式」を選択してみても変わりません。

数式の内容は
=シートA!P2/SQRT(シートA!$BB$2*シートA!P$54)
という感じなのですが、「P2」の部分がシートBの貼り付けたセルの名前になってしまいます。

地道にやろうかとも思いましたが処理する数式の量が莫大なので一列片付けただけでヘロヘロです。
説明が下手で申し訳ないのですが、アドバイスありましたらお願いいたします。
説明不足なところがありましたら補足しますのでご指摘ください。

投稿日時 - 2005-08-09 17:24:23

QNo.1569580

すぐに回答ほしいです

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

シートAとシートBの形式が異なる場合に使えるテクニックをいくつか紹介します。

(1)リンク貼り付け
シートAのある部分をコピーし、シートBに移ってコピー先のセルをクリックし、形式を選択して貼り付け→リンク貼り付け
これを、表の部分ごとに行います。余分の0は単純にDeleteしてもいいし、No.1のようにIF関数に置き替えてもいいです。

(2)INDIRECT関数
文字列をそのままアドレスにして、データを取ってくる関数です。たとえば、
=INDIRECT("シートA!K"&E7)
として、仮にE7に16が入っているなら、シートAのK16が表示されます。

(3)INDEX関数
範囲の中の任意の場所のデータを取ってくる関数です。たとえば、
=INDEX(シートA!$R$11:$U$27,3,5)
とすると、シートAの$R$11:$U$27という範囲から、3行目の5列目にあるデータを取ってきます。
3とか5をセル番地に置き換えると、いろいろな場所のデータを柔軟に取り出すことができます。

(4)VLOOKUP関数
ある範囲の左端の列からあるデータを探し、その範囲の別の列のデータを取ってくる関数です。たとえば、
=VLOOKUP(シートA!$R$11:$U$27,"東京",4,FALSE)
とすると、シートAの$R$11:$U$27という範囲の左端の列(R列)から東京というデータを探し、東京を見つけたらその行の左から範囲内の4列目(U列)のデータを取ってきます。
----------------------
シートAをまるまるコピーする方法もあります。
(シートAのタブを右クリック)
コピーしてから、挿入、削除、移動などを行って、望みの形に整えればいいのです。
----------------------
置換を使う方法もあります。
(例)
P5:P33 が U5:U33 に変わって困るなら、編集→置換でUをPに置き換える
※この場合、目的以外の部分が変わらないように、前後を含めて指定するなど、工夫します。
---------------------
切り取りとコピーをうまく組み合わせる方法もあります。
(例1)
シートAのP5:P33をシートBのP5にコピーしてから、シートBのP5:P33を切り取ってシートBのS17に貼り付けると、アドレスを変化させずに貼り付けることができる。
(例2)
シートAのP5:P33をシートBのS17にコピーしてから、シートBのS17:S45を切り取ってシートBのP5に貼り付けると、アドレスを変化させて同じ場所に貼り付けることができる。
----------------
当たっていなければ申し訳ありません。

投稿日時 - 2005-08-09 18:42:15

お礼

ありがとうございました。
ひとまず「リンク貼り付け」で解決致しました。

投稿日時 - 2005-08-10 21:14:37

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

シートAから、全体をシートBにコピーし、「微妙に違う」部分をシートBで修正すべきです。
シートBにはシートAと同じ位置にコピーしないと、ずらすと
(1)絶対参照記述部分が変わらないことによる不都合
(2)相対参照が、相対的に変化する不都合
が考えられます。
コピー後に、シートBを修正するとき、シートB(シートAのコピー)への挿入削除は割りかし、適当に関数式を変化させてくれるようなのです。
たとえば、E6に=$C$10とあるとき
A列削除や、第8行を削除しても、=$B$10や=$C$9になってくれる。

投稿日時 - 2005-08-10 21:14:11

お礼

修正しなければならない箇所が膨大になってしまうので少し難しいです…
ありがとうございました。

投稿日時 - 2005-08-10 21:16:07

ANo.4

これは、シートA!P2の参照部分だけ、列番号のPにも行番号の2にも絶対参照(もしくは相対参照)の#記号がついていないのが原因なのではないでしょうか。それだけの問題だと思うのですが。

投稿日時 - 2005-08-09 20:07:52

お礼

ありがとうございました。

投稿日時 - 2005-08-10 21:15:13

ANo.2

元の式の、$マークのついている部分は、コピーをして表の位置が変わっても動かないところですから、コピーした後は、
=シートB!<P><2>/SQRT(シートB!$BB$2*シートB!<P>$54)
   <P>、<2>は、コピーした後の位置によって変わります。
   たとえば、シートB!Q3/SQRT(シートB!$BB$2*シートB!Q$54)

のようになっているのではありませんか。

 ・コピーする表の位置を完全に合わせる
 ・まず、シートAと同じシートを作って、その後でシートBの数値に入れ替える
 ・=シートA!$P$2/SQRT(シートA!$BB$2*シートA!$P$54)としてコピーし、必要に
  応じて、$を外して使う

のようなやり方になるのではないでしょうか?

投稿日時 - 2005-08-09 18:08:06

お礼

ありがとうございました。
コピー先の表の形式が複雑なのでこの方法では少し難しいようです。

投稿日時 - 2005-08-10 21:13:59

ANo.1

単に、シートBにシートAと同じものを表示させたいだけなら、

シートBのA1に: =IF(ISBLANK(シートA!A1),"",シートA!A1)

と式をいれて、これを縦横の必要な範囲にコピーすればOKです。
-------------------------
質問がそういう意味でない場合は申し訳ありません。

投稿日時 - 2005-08-09 17:42:46

お礼

シートAの表とシートBの表は微妙に形式が違うのです…
お答えいただきありがとう御座いました。

投稿日時 - 2005-08-09 17:49:36

あなたにオススメの質問