• ベストアンサー

VBAでオートフィルの動き

VABでセルに計算式をLoopで設定する処理を作成したのですが、6000行ほどあるのでそれなりに時間が掛かります。 例えば、セルに計算式を1つ選択して、セルの右下隅(フィルハンドル)にマウスポインタを合わせ黒十字に変わったところでダブルクリックを行うと、一気に値や数式が設定されるかと思い ますが、VBAでこのよな処理は可能なのでしょうか? 実際、計算式を1行入れて、オートフィルを実行するとLoopで実行するより遥かに早く処理が終了します。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

こんな感じです。 Range("A1:A6000").Formula = "=数式"

fufufuman
質問者

お礼

知りたかったそのものでした。有難うございました。

その他の回答 (1)

回答No.2

' Sheet1!A2 と Sheet1!B2 には数値が入っているとします。 ' これが6000行繰り返しあるとします。 ' このとき Sheet1!C2 に数式を入力し AutoFill するマクロ Sub 例1() ' 画面更新を抑制 Application.ScreenUpdating = False ' 数式を設定 Sheet1.Range("c2").Formula = "=A2*B2" ' AutoFill を実行 Call Sheet1.Range("c2").AutoFill(Sheet1.Range("c2:c6000")) ' 画面更新を再開 Application.ScreenUpdating = True End Sub ' 複数列の AutoFill Sub 例2() Application.ScreenUpdating = False ' 数式を設定 Sheet1.Range("c2").Formula = "=A2*B2" Sheet1.Range("d2").Formula = "=C2*2" ' AutoFill を実行 Call Sheet1.Range("c2:d2").AutoFill(Range("C2", Cells(Sheet1.UsedRange.Rows.Count, 4))) ' Sheet1.Range(基準となるセル範囲).AutoFill(Range(左上のセル番地, 右下のセル番地)) Application.ScreenUpdating = True End Sub

fufufuman
質問者

お礼

丁寧な解説、ありがとうございました。

関連するQ&A

  • EXCELでフィルができない

    EXCEL2000を使っています。いきなりフィルができなくなりました。セルの下隅にポイントしても、ポインターがかわらないんです。どうやったら直せるでしょうか?編集でオートフィルを使えることは知っています。

  • EXCEL オートフィル 速すぎ 遅く

    1000行くらいあるデータを処理してます。 1行目に数式を入れて、 下の行ににオートフィルしたいです。 でも、画面の下の方にポインタをもって行くと すると、一瞬で3000行とかまで移動してしまいます この「ポインタを画面の下に持っていったときの ページめくりの速さ」を自分で調整できませんか? ポインタの微妙な位置具合で速さが変わるのですが、 最高速度を自分で決めたいです。 XPです。 オートフィル中は、スクロールバーも ホイール(マウスの真ん中の回るところ) も使えません。 ズームで縮小しまくって 画面送りを少なくするという、手もありますが、 それは文字が小さくなるで、やりたくありません よろしくお願いします。

  • VBAのオートフィルについて

    ワークシートイベント内で、 セルの値に応じて行色を変更する処理をしているのですが、 オートフィルをした場合、 範囲内のセル全てに処理が適応されません 何か解決策はありますでしょうか?

  • オートフィルができない

    エクセル2000を使っています。 新規に作成したファイルで、オートフィル機能が使えません。数式の入ったセルを下にドラッグすると、全て同じ計算式が入ります。 オプションの「ドラッグアンドドロップ編集を行う」はオンになっています。 (ちなみに、オートフィル機能が効く既存のデータで、オプションの「編集」タブを開いて見比べてみましたが、全て同じ設定でした) どうすれぱオートフィルが使えるようになるでしょうか。よろしくお願いします。。。

  • 【Excel2003】数式を含むセルのオートフィルがうまくいきません。

    Excel2003 で数式を含むセルのオートフィルを実行したら、おかしなことになります。例では、=sumif($B$2:$B$19,$B$21,$E$2:$E$19)のセルを下方向にフィルハンドルを使ってコピーしても、数値のコピーにしかなりません。書式のみのコピーにしたら空白がコピーされます。 どうすれば絶対参照を含む数式のコピーがうまくいきますか?

  • エクセルのオートフィルハンドルについて

    よろしくお願いいたします。 エクセルのオートフィルハンドルを使って、数式をコピーするというのは分かるのですが、 ドラッグするのと、ダブルクリックしてコピーする方法があります。 ダブルクリックをして表のような形のものだと表(同じ列)内に数式がコピーされる場合と、 表の外(同じ列だけど行が4行ほど出てしまう)のセルまで、ダブルクリックするとコピーされてしまいます。 どうしてでしょうか。お答えをお願いします。すみません。

  • エクセルのオートフィル機能が最後まで働かない。

     WindowsXPでExcel2003を使っています。数日前,それまで問題なく使っていたオートフィル機能がおかしくなりました。番号列をつくることは,現在でもできますが,つぎの例のようなことが起きます。  (1):セルA1からA4まで数字を手動でいれます。A5で「=SUM(A1:A4)」と入力してエンターキーを押すと,合計の数値がでます。その値を12とします。B1:B4,C1:C4にも同種類の数値列(各セルの数値はA1:A4のものと異なる)があるので,B列,C列でも合計を求めようとして,A5の右下隅からフィルハンドルを右にドラッグします。すると,B5とC5にはそれぞれの列の合計値ではなく,12が出ます。A5の値がコピーされたようになるのです。しかし,モニター画面で入力フィールドの上にある「fx」の窓では,B5を選択すると,「=SUM(B1:B4)」という正しい数式が示されます。数式は正しくても,B5にはA5の数値が示されるのです。  (2): 上の例で,B5を選択して「fx」の窓に「=SUM(B1:B4)」を出し,その数式の先頭(「=」の前)にカーソルを置くと,B1:B5が色つきの線で選択されます。つぎにエンターキーを押すと,B5にはB1:B5の合計値がでます。いちいちカーソルを「fx」の窓の先頭に置かないと正常な計算ができないということです。  (3): (1),(2)と同じことは累積値を出すときにも起きます。たとえば,A列に「収入」,B列に「支出」の数値が2行目から手動で入力されていて,C列に「残高」(累積値)を出すとします。A2には,出納簿に最初にいれた金額があるとします。そこで,C2 にA2の数値をコピーし,C3 に「=C2+A3-B3」とすれば,3行目の残高が出ます。ここで,セルC3の右下隅からフィルハンドルを下にドラッグすれば,残高が順次示されるはずです。しかし,C4以下にはC3の数値が出ます。「fx」には正しい数式が示されています。 オートフィルが使えるようパソコンに詳しい方のご指導を切に望みます。以上

  • フィルハンドルができない

    フィルハンドルができない 例えばLEFT関数とか数式をを入れた時、その式を1000行目まで フィルハンドルで一気に入力したいとします。 通常はできるのですが、その1000行の中に空白が あったりすると、フィルハンドルはその空白のセルで止まってしまうので、 手で1000行目までハンドルを持っていかなければいけません。 何か、簡単に一気に入力できる方法はないでしょうか。 連続データの作成をやってもうまくいかなかったです。 ↓  下の場合だと、A列にLEFT関数の式を入力してフィルハンドルすると、 B列4行目に空白があるので、3列目で連続のデータがとまってしまいます。       A列     B列 1行目 LEFT関数  1234 2行目 LEFT関数  1233   3行目 LEFT関数  1234           4行目           空白            5行目         1233           

  • 離れた列のオートフィル、オートSUMのコピー

    2点質問いたします。 exel2007を使用し、行数の多い縦長の表を多数作っています。 A列C列E列など離れた列でそれぞれ一定の計算を行うときに今までは個別にオートフィル機能を使って下方まで計算していました。 隣り合う列ならばまとめてオートフィルをかけていますが、ctrlボタンでの複数セル選択ではオートフィルが出来ないようで困っています。 さて、このように列が離れている場合に、それぞれの列を一括でオートフィルにかけることは可能でしょうか? 表が縦長な故、ポインタの上下を繰り返すのが手間になっています。 もう1点ですが それぞれの列の合計欄の行を設けていますがこれまでは1列をオートSUM計算し、オートフィル機能で全ての列の合計を出し、合計しない列はそのつど削除していました。 この合計欄の行が表の中で複数あるため、 合計欄自体を別で先に作成し、作成した合計欄を挿入する形にしたいと考えております。 合計する行数がまちまちのために合計する行をそのつど範囲指定できないのでオートSUM機能を使いたいです。 つきましてはセルの数式にオートSUMを予め入れる方法はありますでしょうか? 分りずらい長文で申し訳りませんがよろしくお願いいたします。

  • Excel2010 数式のオートフィルに関して

    現在Excel2010を使っています。 関数を入力し、それを2000行までフィルしたい場合、やはり2000行ドラッグするしか方法はないのでしょうか? 隣接するセルにデータがある場合はダブルクリックでオートフィルできますが、他には何もデータがない場合、2000行までドラッグするのは面倒だと思い、何か方法がないかと探しています。 数値であれば、ホームタブ「フィル」→「連続データの作成」で停止値の設定ができますが、 文字列や数式の場合は設定できないようで…。 そして、その「連続データの作成」の設定の中に、「オートフィル」とあるのに停止値の設定はできず、 そのままOKをしても何の変更も起こりません。 この機能はどんなに使うのでしょうか? もしご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。