Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


778 / 13645 ツリー ←次へ | 前へ→

【78372】隣の列と同じ行までコピーするについて [名前なし] 16/7/28(木) 14:52 質問[未読]
【78374】Re:隣の列と同じ行までコピーするについて マナ 16/7/28(木) 20:34 発言[未読]
【78375】Re:隣の列と同じ行までコピーするについて β 16/7/28(木) 23:29 発言[未読]
【78376】Re:隣の列と同じ行までコピーするについて β 16/7/28(木) 23:32 発言[未読]
【78377】Re:隣の列と同じ行までコピーするについて [名前なし] 16/7/29(金) 9:25 質問[未読]
【78378】Re:隣の列と同じ行までコピーするについて β 16/7/29(金) 9:50 発言[未読]
【78379】Re:隣の列と同じ行までコピーするについて β 16/7/29(金) 9:58 発言[未読]
【78380】Re:隣の列と同じ行までコピーするについて [名前なし] 16/7/29(金) 10:54 お礼[未読]

【78372】隣の列と同じ行までコピーするについて
質問  [名前なし]  - 16/7/28(木) 14:52 -

引用なし
パスワード
   .Range("A1:A1").AutoFill Destination:=Range("A1:A" & Range("B1").End(xlDown).Row()) 'Sheet1の列「A1」を列「B1」と同じ行までコピーと貼り付けをする。

複数行なら問題なくマクロが動くんですが、1行の場合一番下までマクロが動きます。
1行の場合も問題なくマクロが動くようにしたいのですが、どうすればいいですか?

【78374】Re:隣の列と同じ行までコピーするについて
発言  マナ  - 16/7/28(木) 20:34 -

引用なし
パスワード
   ▼[名前なし] さん:

もっと簡単にできそうで、できませんでした

Sub test()
  Dim n As Long
  
  With Range("a1")
    n = Range(.Cells, Range("B" & Rows.Count).End(xlUp)).Rows.Count
    .Resize(n).Value = .Value
  End With

End Sub

【78375】Re:隣の列と同じ行までコピーするについて
発言  β  - 16/7/28(木) 23:29 -

引用なし
パスワード
   ▼[名前なし] さん:

データが1行しかない場合も想定すると、xlDownではなく
マナさん回答のように、xlUp を使います。
xlUpも、データのありようによっては万能ではありませんが、
xlDownより、確実度合が 高いと思います。

ところで、A1の中身が値なのか数式なのかわかりませんけど
以下の方法で、いずれでもカバーできると思います。

Sub Sample()
  Range("B1", Range("B" & Rows.Count).End(xlUp)).Offset(, -1).Formula = Range("A1").Formula
End Sub

【78376】Re:隣の列と同じ行までコピーするについて
発言  β  - 16/7/28(木) 23:32 -

引用なし
パスワード
   ▼[名前なし] さん:

A1の書式も含めてコピーなら

Sub Sample2()
  Range("A1").Copy Range("B1", Range("B" & Rows.Count).End(xlUp)).Offset(, -1)
End Sub

【78377】Re:隣の列と同じ行までコピーするについて
質問  [名前なし]  - 16/7/29(金) 9:25 -

引用なし
パスワード
   お二人のマクロを試したんですが1行しかコピーできませんでした。
複数行の時は、最終行までコピーと1行の時は1行まで問題なくコピーできればと思ったんですが

下記がもともとのマクロです。
Range("C12:C12").AutoFill Destination:=Range("C12:C" & Range("N12").End(xlDown).Row())
Range("L12:L12").AutoFill Destination:=Range("L12:L" & Range("N12").End(xlDown).Row())
Range("M12:M12").AutoFill Destination:=Range("M12:M" & Range("N12").End(xlDown).Row())

あと、「C12」、「L12」、「M12」にはそれぞれ数式が記入してます。
説明不足で済みませんでした。

【78378】Re:隣の列と同じ行までコピーするについて
発言  β  - 16/7/29(金) 9:50 -

引用なし
パスワード
   ▼[名前なし] さん:
>お二人のマクロを試したんですが1行しかコピーできませんでした。

その、試したコードをそのままアップしてください。

【78379】Re:隣の列と同じ行までコピーするについて
発言  β  - 16/7/29(金) 9:58 -

引用なし
パスワード
   ▼[名前なし] さん:

ちなみに、私の Sample方式でやれば以下になりますけど、そういった形にしていますか?

Sub Sample3()
  With Range("N12", Range("N" & Rows.Count).End(xlUp))
    .EntireRow.Columns("C").Formula = Range("C12").Formula
    .EntireRow.Columns("L").Formula = Range("L12").Formula
    .EntireRow.Columns("M").Formula = Range("M12").Formula
  End With
End Sub

【78380】Re:隣の列と同じ行までコピーするについて
お礼  [名前なし]  - 16/7/29(金) 10:54 -

引用なし
パスワード
   βさんのSample方式で試したらうまくできました。
ありがとうございます。

778 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free