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

解決済みの質問

EXCEL2010 VBAで空白行以外をコピー

EXCEL2010を使用しています。
シートAではセルA1からA10に順にデータを入力していきます。
A1からA10のすべてにデータを入力する場合やA1からA4のみデータを入力する場合等があります。
このA1からA10のデータをシートBのA1からJ1にコピーしたいと思っています。
空白以外のデータをコピーして、コピー後はシートBのA1:J10で空白の列は削除したいと
思っています。
(例)
シートA
A1 ○
A2 ○
A3 ×
A4以降すべて空白

シートB
A1 ○
B1 ○
C1 ×
D1からJ1までは列ごと削除

これをVBAで作成したいのですがどなたか詳しい方押してください。

投稿日時 - 2011-05-31 12:00:21

QNo.6776459

すぐに回答ほしいです

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

作成例:
sub macro1()
’行列を入れ替える
 worksheets("SheetA").range("A1:A10").copy
 worksheets("SheetB").range("A1").pastespecial _
  paste:=xlpasteall, operation:=xlnone, skipblanks:=true, transpose:=true
’空白を削除する
 on error resume next
 worksheets("SheetB").range("A1:J1").specialcells(xlcelltypeblanks).delete shift:=xlshifttoleft
end sub


貼り付け先はA1:J1ですが,もしもホントに「列ごと削除して良い削除したい」なら
 worksheets("SheetB").range("A1:J1").specialcells(xlcelltypeblanks).entirecolumn.delete shift:=xlshifttoleft
とします。




#あなたの言う「空白」がホントは「空っぽ」の意味じゃなく「空白に見えるけど実はこれこれが入ってました」の場合,正しい具体的な内容を添えてご相談を投稿しないとダメな場合があります。

投稿日時 - 2011-05-31 12:29:10

お礼

回答ありがとうございます。
さっそく試してみたいと思います。

投稿日時 - 2011-05-31 13:03:51

ANo.1

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

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

回答(2)

ANo.2

一例です。

シートAタブ上で右クリック→コードの表示→以下のコードを貼り付け→F5キー押下でマクロ実行してみて下さい。

Sub sample()
With Worksheets("シートB")
For i = 10 To 1 Step -1
If Cells(i, 1) = "" Then
.Columns(i).Delete
Else
.Cells(1, i).Value = Cells(i, 1)
End If
Next
End With
End Sub

投稿日時 - 2011-05-31 13:15:20

お礼

回答ありがとうございます。
このような方法もあるのですね。助かります。

投稿日時 - 2011-05-31 13:47:35

あなたにオススメの質問