• ベストアンサー

【関数】セル全体に式をコピーしたい場合

例えばセルH2に100(本体価格)、セルI2にH2の8%を反映させたい場合の式は以下ですが =IF(H2="","",INT(H2*1.08)) I列全てに反映させたいのですが、I列全てを選択したあと、この式を入力(して列全体に反映)するにはどうしたらよいのでしょうか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! >I列全てに反映させたいのですが Excel2007以降の場合は最終行は104万行を超えてしまいます。 実際問題としてそこまでの数式は必要なのでしょうか? すでに回答されている方法で可能だとは思いますが、おそらくかなりの時間を要し「応答なし」になってしまうのでは? そこで余計なお世話かもしれませんが、仮に10000行まで数式を入れたい場合は J列を使用している場合はJ列を挿入 → J2セルに 「2」と入力 → 画面左上のフィルのアイコン(Σのアイコンの下にある下向き矢印のアイコン)をクリック → 連続データの作成 → 「列」を選択し「停止値」に 10000 と入力しOK これで2~10000の連番が表示されます。 その後I2セルのフィルハンドルをダブルクリックしてみてください。 これでI2~I10000セルまでオートフィルでコピーした状態になります。 最後にJ列を削除して完了です。m(_ _)m

noname#206454
質問者

お礼

訂正です。 補足のこと、忘れてください。 I2セルのフィルハンドルをJ2と読み間違えていました。 ただI2セルのフィルハンドルをダブルクリックしているのですが、オートフィル設定したはずの任意の行10を超えてもずーっと反映されているのですが…なぜでしょう?

noname#206454
質問者

補足

ご回答ありがとうございます。 確かに最終行まで使うことはありませんので助かります。試してみましたが…まだよくわかりません。 回答No.2の方法も試したところ、これはできました。(応答なしにはなりませんでした)。 しかし一度リセットして新規作成をだしてやり直しました。 H2セルに式 =IF(H2="","",INT(H2*1.08)) を入力。ここになんらかの数値を入れるとI2に反映することはできました。 問題はここからで、ご回答すべてそのまま実行しましたが、HとIに、Jをどう関連づけるのかわかりません。 数式をコピーするというのは、 >J2セルに 「2」と入力 という部分ですか? これに代わり式を入れるのだと思いまして2の代わり =IF(H2="","",INT(H2*1.08)) と入力、次に連続データの作成で設定しても、行10まで数式はコピーされないのですが… Jでオートフィル設定することで、自動でHに式が反映すると思っていたのですが、もう少し具体的に手順を教えていただけると助かります。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

続けてお邪魔します。 >この「左右」というのは、H列とI列のことで、「どちらか少ない」というのは、HかIの数値か数式のいずれかが少ない場合ということでしょうか? 今回の質問の場合、隣接する列とはH列・J列になります。 I2セルのフィルハンドルでダブルクリック!という回答をしましたので、 H列もしくはJ列のどちらかの少ない方の最終行までのフィルとなります。 試しにH10までデータを入れておいて、J列は何万行でも良いのでNo.3で説明した方法で 何らかのデータ(連番でもOK)を入れておいてください。 I2セルに数式を入れ、I2セルのフィルハンドルでダブルクリック! 数式はI10セルまでしか入らないはずです。 (途中に空白セルがあるとその前の行までのフィルとなります) H列にデータがなく、J列のみにデータがある場合はJ列の最終行まで数式がコピーされます。 すなわちNo.3の方法はH列にデータを入れる前の操作でないと、 指定した行までのフィル&コピーにはなりません。 この説明がないばっかりに余計に判りにくくしてしまいましたね。 どうも失礼しました。m(_ _)m

noname#206454
質問者

お礼

補足ありがとうございます。 試してみましたところ、分かりました。 tom04さんから教えてもらった方法がいちばん現実的ですので、この方法を活用したいと思います。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3です。 >ただI2セルのフィルハンドルをダブルクリックしているのですが、オートフィル設定したはずの任意の行10を超えてもずーっと反映されているのですが…なぜでしょう? について 前回のJ列は単純にJ10000まで何らかのデータを入れるためだけです。 一番簡単な連番を入れる方法でした。 これは隣接するセルの最終行までダブルクリックでフィルできる機能を利用したものですが、 もし、H3以降にデータが入っている場合は左右どちらかの少ない最終行までのフィルになってしまいます。 他の方法としては直接どのセルまでコピーするか!と決める方法があります。 I2セルの数式が入っているとして、I10000セルまでフィル&コピーする場合は I2セル上で右クリック → コピー → 名前ボックス(画面左上のI2)と入っているところの 「I2」を消してI10000と入力 → Shiftキーを押しながらEnter → I2~I10000セルが範囲指定されている状態で右クリック → 貼り付け これで完了です。 ※ ショートカットキー操作の場合は I2セル上でCtrl+C → 名前ボックスにI10000と入力 → Shift+Enter → Ctrl+V でも同じ結果となります。m(_ _)m

noname#206454
質問者

補足

補足回答ありがとうございます。 再び試してみたところ、数値が入っていることで違いがでるということが分かりました。 H列に数値が入っている場合には、フィルで指定した範囲を超えてもなお、Iに反映し続けるけれど、数値が入っていない場合、指定した範囲内でのみ、反映されました。 あと >これは隣接するセルの最終行までダブルクリックでフィルできる機能を利用したものですが、 もし、H3以降にデータが入っている場合は左右どちらかの少ない最終行までのフィルになってしまいます。 この「左右」というのは、H列とI列のことで、「どちらか少ない」というのは、HかIの数値か数式のいずれかが少ない場合ということでしょうか? ここだけ気になりましたので、再度補足しました。

回答No.4

オートフィルを使えばいいのではないでしょうか。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/input_autofir.htm 全く同じにするなら、数式バーでH2を$H$2にしてオートフィル、 H2に対してI2、H3に対してI3を対応させるのであればそのままでオートフィルでもいいと思います。 ちなみに、 http://okwave.jp/qa/q6890720.html の回答No.8でも同じことができるのですが、今回は不向きかと。 ただ、関数を含む表を複製する場合はかなり便利です。

noname#206454
質問者

補足

ご回答ありがとうございます。 >H2を$H$2にして =IF($H$2="","",INT($H$2*1.08)) このような式に直し、I2に入力しました。 リンク先でいえば最後の「数式のコピー(オートフィル)」のことだと思いましたので、I2を任意のところまでドラッグしましたが、I2と同じ数値がコピペされるだけでHで入力しても反映しません。 この方法でよかったのでしょうか?

回答No.2

  申し訳ない、一部訂正 別の方法 I2セルに=IF(H2="","",INT(H2*1.08))を入力する Ctrl+c でコピーした後 「Shift」と「Ctrl」を押しながら「↓」キーを押す 「Enter」を押す こちらが正解です  

noname#206454
質問者

お礼

幸いエラーもでることなく、列の最後尾までコピペできました。

回答No.1

方法は二つあります 反映させたいセルを全て選択した後で =IF(H2="","",INT(H2*1.08)) をキーボードから入力し 「Ctrl」を押しながら「Enter」を押す 別の方法 I2セルに=IF(H2="","",INT(H2*1.08))を入力する Ctrl+c でコピーした後 「Shift」を押しながら「↓」キーを押す 「Enter」を押す  

noname#206454
質問者

補足

ご回答ありがとうございます。 まず、キーボード入力とは「fx」とある空欄のバーに入力することだと思いますが、最初の方法を試したところ、ずれが生じました。 1行目は列のタイトルを入れるため、セルは2としたのですが、最初の方法では反映される側の列の一行目にも反映してしまっています。(なぜか108という数値が入っているのですが)そして同列の最後のセルは空欄になっているのです。 それを気にせず、本体価格の方に、続けて数値を試し入力すると、この空欄に結果が反映するという変な現象が… もしおわかりになるのでしたら、訂正方法を教えてください。

関連するQ&A