![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
マクロ初心者です。
表記の件に就き、何卒ご教授の程、宜しくお願いします。
・エクセルで以下のような表があるとします。
__A__B__C__D→
1_数量_単価_金額
2_4,000_100_=B3*C3
3_5,000_200_
4_3,000_120_
5_5,000_160_
↓
・そしてこのAとB列が毎回下に増えるとして、C2セルの数式を
B列の最後の行までコピーするマクロを教えて下さい。
(実際は、C2セルにVLOOK関数が入っており、最終行は何千行まであります)
何卒ご教授の程、宜しくお願い申し上げます。
No.4ベストアンサー
- 回答日時:
こんにちは。
単に、
オートフィル
四角の右下の■
をダブルクリックすればよいのではないでしょうか。
------------------------------
マクロの場合は、ちょっと難しいですね。人間が判断していることを、マクロにやらせるようになります。
・数式があるかないかの判定をします。
・数式の最後の行を探さなくてはなりません。もちろん、C2 を基点にしてしまってもよいのですが、工夫がありません。
・すでに数式が入ってしまっている場合には、マクロは実行しない。
以下のコードは、コマンドボタンにすると良いと思います。
本来は、シートモジュール用に作られ、コントロールツールのコマンドボタンの中のコードとして使うように考えらましたが、別のシートでも可能なような、フォームツールにしてもかまいません。
i = 3 'ここを取り去れば、1列目以外のすべての列で可能になります。
なお、一部を削除するなりすれば、特に、3列目にしなくても可能になります。
---------------------------------------
Sub Test1()
Dim r As Range
Dim rng As Range
On Error Resume Next
If StrComp(TypeName(Selection), "range", 1) = 0 Then
i = Selection.Column
If i = 1 Then Exit Sub
If Application.CountA(ActiveSheet.Columns(i - 1)) = 0 Then Exit Sub
End If
'3列目*
i = 3 'ここを取り去れば、1列目以外のすべての列で可能になります。
Set rng = ActiveSheet.Columns(i).SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
Application.ScreenUpdating = False
If Not rng Is Nothing Then
With rng
Set r = .Cells(.Count)
If r.Row >= ActiveSheet.Cells(65536, i - 1).End(xlUp).Offset(, 1).Row Then
MsgBox "最下行まで入っているか、数式は必要ないようです。", 64
Else
r.Copy ActiveSheet.Range(r, ActiveSheet.Cells(65536, i - 1).End(xlUp).Offset(, 1))
End If
End With
Else
MsgBox i & "列目には「数式」が見当たりません。", 48
End If
Application.ScreenUpdating = True
Set r = Nothing
Set rng = Nothing
End Sub
ご回答有難うございます。
私、簡単な「自動記録マクロ」しかできませんので、
私には理論は理解できませんが、そのままコピーさせて頂いたところ
素晴らしい反映結果が返ってきました。
本当に凄いです。
我々、皆、この件で困っていましたので、本当に助けられました。
本当にありがとうございました。
No.3
- 回答日時:
#1です。
質問は「マクロを」ということでしたか・・・。
Sub test()
Range(Range("C3"), Range("C" & Range("B65535").End(xlUp).Row)).Value = Range("C2").Value
End Sub
こんな感じになりますね。
ご回答ありがとうございます!
まさに求めていたもの、そのものです。
問題が解消されました。
他の列で行うときは「C」を「○」列に変えれば大丈夫ですよね?
本当にありがとうございました。
No.2
- 回答日時:
いろいろやり方はありますが、私なら
1)C2を選択
2)[CTRL]+[C](コピー)
3)[←](B2を選択)
4)[CTRL]+[↓](B列の最後まで)
5)[→](C列を選択)
6)[CTRL]+[SHIFT]+[↑](上記セルからB2までの範囲を選択)
7)[CTRL]+[V](ペースト)
と操作します。
ちなみにVLOOKUPの範囲指定のセル参照は絶対参照にしておかないと、エラーになってしまいますので気をつけてください。
No.1
- 回答日時:
マクロで行う理由が解りませんが、それだけの機能であればマクロは不要です。
フィルコピーではダメなのですか?
http://www.relief.jp/itnote/archives/001648.php
http://hamachan.info/excel/o-tof.html
この回答への補足
ご回答有難うございます。
記述不十分で申し訳ございません。
上席(年配者)がボタン一つで見れるようなマクロの一部分で、
今まではそこだけ数千行まで先に入れてました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
Excel(VBA)データ入力に応じて...
-
Excelでセル内の数式は残し値だ...
-
Excel2007 セルを右方向に削除...
-
Excelで周期的に列を削除する方法
-
エクセルで全ての数字間にカン...
-
VBA コピーを有効行までループ...
-
エクセル2003でマクロをおこな...
-
値貼り付けをしても書式も貼り...
-
区切り文字以降を16進数を10進...
-
Excelで計算結果の文字色を一部...
-
VBA シングルクォーテーション...
-
エクセルの複数シートの保護を...
-
Excelのシートを、まとめて表示...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルVBAでパスの¥マークに...
-
シートの保護のあとセルの列、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
Excelでセル内の数式は残し値だ...
-
「マクロ」の足し算の式を教え...
-
Excelで連続印刷をするマクロ
-
エクセル VBA 小数点を含む数字...
-
Excel(VBA)データ入力に応じて...
-
値貼り付けをしても書式も貼り...
-
エクセルで全ての数字間にカン...
-
Excel にて非表示行を探すワー...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
並べ替えのマクロで対象行の範...
-
エクセルで、行ごとの並び替え...
-
Excelで周期的に列を削除する方法
-
行の入れ替えってどうするの?
-
整数行を残し小数点の行を削除...
-
Excelで更新日を自動的に入れたい
-
エクセル2003でマクロをおこな...
-
yyyy/mm/ddの日付に一括変換す...
おすすめ情報