こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelのVBAです。

先日お答えいただいたVBAなんですが、

Sub Macro1()
Sheets("Sheet1").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet3").Select
Range("A1").Select
ActiveSheet.Paste
Selection.End(xlDown).Select
Application.CutCopyMode = False
Do
Selection.Insert Shift:=xlDown
Selection.End(xlUp).Select
Loop Until ActiveCell.Address = "$A$1"
End Sub

というのを使用させて頂いてます。
これを、コピー先のものを上書きせずに、コピーされたものがあれば表示させるといった風に出来ないでしょうか?


 A    A
1 a 1
2 b → 2あ
3 c 3

右から左に一行間隔で別シートに表示させたいのですが、

 A 
1 a
2 あ
3 b
4
5 b

という結果にしたいのです。

拙い文章で申し訳ないのですが、教えて頂きたいです。

投稿日時 - 2009-11-26 12:54:31

QNo.5477322

すぐに回答ほしいです

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

こんにちは。

前回のご質問の要件
>一行空けてもしくは数行空けて表示させるVBAはありますか?

前回の回答者です。使う使わないは、ご質問者の自由ですが、前回のものをほんのちょっと変えるものなのか、そうでないかは、コードをみて判定するだの力がないようでしたら、一度は、書いた人に聞いてからにしてぐたさい。

ただ、前回のコードでも、形式を選択して貼り付けで、空白を無視するという選択で可能です。

'-------------------------------------------

Sub TestMacro2()
'飛び飛びに並べ替える
  Dim rng As Range
  Dim myData As Variant
  Dim i As Long, j As Long
  Dim Sh2 As Worksheet
  '============================
  ''設定
  '何行置きか入れる
   Const cnt As Integer = 2 '(*一行置きは、2)
  'ペースト先は、何行目に入れるか
  j = 1 '1行目
  Set Sh2 = Worksheets("Sheet3") '同じ場所でも可能
  '============================
  With ActiveSheet
    Set rng = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
    myData = Application.Transpose(rng.Value)
    'rng.ClearContents ' '同じ場所なら、これを外す
    Application.ScreenUpdating = False
    For i = LBound(myData) To UBound(myData)
      Sh2.Cells(j, 1).Value = myData(i) '* 貼り付け先
      j = j + cnt
      If j >= Rows.Count Then Exit Sub
    Next i
    Application.ScreenUpdating = True
  End With
  Sh2.Select
  Set Sh2 = Nothing
End Sub

投稿日時 - 2009-11-26 13:59:19

お礼

誠に申し訳ないです。

ご指摘の通り、前回の方に聞けば良かったのですが、
慌ててました。


また、このコードで無事解決できました。
ありがとうございました。

投稿日時 - 2009-11-26 16:59:56

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問