プロが教える店舗&オフィスのセキュリティ対策術

いつも助けていただきありがとうございます。
過去の質問を何種類か何度試してみてもうまく動きません。
内容過去の質問と重複するところもありますが、
何卒宜しくお願い致します。

A B C D ・・・・・
3 1 A1+x A1+y A1+z ・・・・・
4 2 A2+x A2+y A2+z ・・・・・
5 3 ・ ・ ・ ・・・・・
6 4 ・ ・ ・ ・・・・


A1の数が関係する数式B1:D1の関数を、
A列が存在する最終行まで同様に関数貼り付けするマクロを作りたいのですが、
うまくいきません。

A列は途中で途切れることもないですし、
実際に貼り付けたい式はVLOOKUPを使った式です。
また、式はシートの先頭(1列目)が開始ではなく3列目や4列目です。
使用Excelは2007です。

過去の質問からRange("A1", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1).Resize(, 3).Formula = Range("B1:D1").Formula
という式はみつけたのですが、
正直どのように加工していいかわかりません。
貼り付け作業はするのですが、関係ない場所に貼ってしまいます。

詳しい方、ご教授下さい。
マクロは最近使うようになった初心者です。

他に必要な情報があれば記載しますのでご指摘下さい。

質問者からの補足コメント

  • 投稿時、わかりづらい表に変換されていますが、
    1番左は3列4列5列という意味です。
    数式は例で適当に作っただけです。

    見づらくてすみませんが、宜しくお願い致します。

      補足日時:2016/12/04 03:22
  • 例えばB3からK3を選択して右下の■をダブルクリックした動作を命令したいのです。
    すると、A行に数値が存在するところまで自動で貼り付けができます。
    A行には空白がありません。

    これをマクロで指示する式を教えていただきたいです。

      補足日時:2016/12/04 11:09

A 回答 (3件)

B3:K3には既に式が入っているということですね。


であれば以下です。


Sub Sample()
  Dim sCol As String, eCol As String
  Dim sRow As Long, eRow As String
  
  sCol = "B" ' 対象開始列
  eCol = "K" ' 対象終了列
  sRow = 3 ' 開始行

  eRow = Cells(Rows.Count, "A").End(xlUp).row

  Range(Cells(sRow, sCol), Cells(sRow, eCol)).AutoFill _
    Destination:=Range(Cells(sRow, sCol), Cells(eRow, eCol)), _
    Type:=xlFillDefault
End Sub
    • good
    • 0
この回答へのお礼

2ヶ月苦戦していたことが終わりました。
無事動作します。
本当にありがとうございました。

お礼日時:2016/12/04 11:54

以下で参考になるでしょうか。


B列~D列に以下の式を書きみます。

B列 = An + 1
C列 = An + 2
D列 = An + 3



Sub Sample()
  Dim 行 As Long
  Dim 列 As Long
  Application.ScreenUpdating = False
  
  行 = 3 ' 開始行
  列 = 2 ' B列
  
  Do While Cells(行, "A").Value <> "" ' A列に値が有る間繰り返す
    Cells(行, 列).Formula = "=A" & 行 & "+1" ' B列に書く式
    Cells(行, 列 + 1).Formula = "=A" & 行 & "+2" ' C列に書く式
    Cells(行, 列 + 2).Formula = "=A" & 行 & "+3" ' D列に書く式
    
    行 = 行 + 1
  Loop
  
  Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
簡単な式で試した結果、無事動作しました。

私が書いた情報不足で申し訳ないのですが、
この方法でも可能ですが、実際はK3ぐらいまで式が入っていたり、
空白だったりしております。

それ全てを含めてA行に数値が存在するところまで貼り付けたいです。

マウス動作で言いますと、B3からK3までを選択し、
セルの右下の■をダブルクリックした動作を命令したいのです。

大変わかりやすく書いていただきありがとうございます。
引き続きお答えいただけると助かります。

お礼日時:2016/12/04 11:04

>>数式B1:D1の関数を


ここの意味が不明。
貼り付ける場所はどこ?

例えば、E列にVLOOKUPの式を貼り付けるなら
END = ActiveSheet.Range("A1").End(xlDown).Row
ActiveSheet.Range("E1:E" & END).Formula = "=VLOOKUP・・・・"

又は
ActiveSheet.Range("E1:E" & ActiveSheet.Range("A1").End(xlDown).Row).Formula = "=VLOOKUP・・・・"
    • good
    • 0
この回答へのお礼

わかりづらく申し訳ございません。
列はK行までA行の数を使った数式が入っております。

3列目のB3から始まりK3まである数式を
A行に数値が存在するところまで貼り付けたい
という意味です。

マウス作業でいうと、
B3からK3を選択してセルの右下ダブルクリックです。

お礼日時:2016/12/04 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!