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

「Excel VBA 相対参照から相対位置へカットアンドペースト」
選択セルからx.y(変数)の相対位置にあるセルを含む縦方向一番下までのセルをカットして、選択セルにペーストしたいです。
どうしても組めません。
使っているのはExcel2019です。
誰か教えてください。
よろしくお願いします。

「「Excel VBA 相対参照から相対位」の質問画像

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

  • 図はやりたいことを手作業で行っているところです。
    もともと縦一列の長いデータを決まったセルの数で分割してカット、次の行へペーストしています。
    図に従うと、次にやろうとしていることは
    「AE34から一番下までカット」

    「AF3にペースト」
    この次の
    「AF34から一番下までカット」

    「AG3にペースト」
    を自動化したいです。

      補足日時:2020/01/19 17:15

A 回答 (4件)

No.3 の補足



Excel 2003 と Excel 2019 で試しましたがこちらではエラーになりません。
コピペで無く手入力なら間違いが無いかもう一度確認して下さい。
ちなみに「Const …」の部分以外はそのまま動くはずなので、コピペして必要であれば「Const …」の部分だけ修正する事をお勧めします。
    • good
    • 0

「対象列番号 = Range(対象列記号 & "1").Column」で構文エラーとの事ですが


このコードのままコピペされたのでしょうか?変更した場合はどこをどのように変更したか提示して下さい。
    • good
    • 0

こんな感じはいかがでしょうか?



Sub Sample()

 Const 対象列記号 As String = "AE"
 Const 始行番号 As Long = 3
 Const 終行番号 As Long = 33
 Dim 対象列番号 As Long
 Dim 先列番号 As Long
 Dim データ数 As Long
 Dim 元行番号 As Long
 Dim 最終行番号 As Long
 対象列番号 = Range(対象列記号 & "1").Column
 先列番号 = 対象列番号 + 1
 データ数 = 終行番号 - 始行番号
 元行番号 = 終行番号 + 1
 最終行番号 = Cells(Rows.Count, 対象列番号).End(xlUp).Row
 Application.ScreenUpdating = False
 Do While 元行番号 <= 最終行番号
  Range(Cells(元行番号, 対象列番号), Cells(元行番号 + データ数, 対象列番号)).Cut Cells(始行番号, 先列番号)
  元行番号 = 元行番号 + データ数 + 1
  先列番号 = 先列番号 + 1
 Loop
 Application.ScreenUpdating = True
 MsgBox ("終了しました")

End Sub
    • good
    • 0
この回答へのお礼

対象列番号 = Range(対象列記号 & "1").Column
のところに構文エラーが発生してしまいます、、。なぜでしょう?

お礼日時:2020/01/20 13:37

もともと縦一列の長いデータを決まったセルの数で分割してカット、次の行へペーストしています。


ではなく                             ↓
もともと縦一列の長いデータを決まったセルの数で分割してカット、次の列へペーストしています。
ですよね
    • good
    • 1
この回答へのお礼

そうです!

お礼日時:2020/01/20 13:37

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