Excelでデータを再配置するマクロの組み方を教えて下さい!
参考画像→ http://goo.gl/2nLWH
画像左側のように複数のデータセットが縦方向に配置されているシートで、左上が「セット○」セルから始まるデータセット単位で横方向に空白列を挟んで再配置したいと思っています。
画像はサンプルデータで、実際には行数は不定数、列数は4列のセットが複数個存在します。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
#2、#3、cjです。
> できました!今までのマクロはコードを見た時に大体どのように実行されているのかなとわかったのですが、貴方様のコードはマクロ初心者の小生にはチンプンカンプンです(笑)流石です!
馬鹿にしてます?(笑)
内容的には、マクロの記録をアレンジしたような、
VBAというよりは、とてもEXCEL一般機能寄りの処理をしています。
Set rTgt = .Range("A:A").SpecialCells(Type:=xlCellTypeConstants)
(手作業なら、A列を選択、F5キー、Alt+Sキー、Alt+Oキー、Enter)
で、A列にある定数セルを取得して
rTgt.Areas(i).Resize(, 4)
(手作業なら、Ctrl+Alt+Sキー Shift+→キーを3回、の繰り返し)
で、それぞれのセルブロック(領域)を4列に拡張して
.Copy Destination:=Sheets("Sheet2").Cells(i * 5 - 4)
指定のセルに貼り付ける、、、
という内容です。
#3のコード、より堅実に書き直しました。
Sub Re8130368dd()
Dim rTgt As Range
Dim i As Long
Set rTgt = Sheets("Sheet1").Range("A:A").SpecialCells(Type:=xlCellTypeConstants)
If rTgt Is Nothing Then Exit Sub
For i = 1 To rTgt.Areas.Count
rTgt.Areas(i).Resize(, 4).Copy Destination:=Sheets("Sheet2").Cells(i * 5 - 4)
Next i
Set rTgt = Nothing
End Sub
> ちなみに列数を5列や6列にするにはどのように変数を与えてやればよいでしょうか?
6列の場合、を見てもらえれば、要領が分かると思います。
Sub Re8130368d6()
Dim rTgt As Range
Dim i As Long
Set rTgt = Sheets("Sheet1").Range("A:A").SpecialCells(Type:=xlCellTypeConstants)
If rTgt Is Nothing Then Exit Sub
For i = 1 To rTgt.Areas.Count
rTgt.Areas(i).Resize(, 6).Copy Destination:=Sheets("Sheet2").Cells(i * 7 - 6)
Next i
Set rTgt = Nothing
End Sub
列数に依存しない書き方もありますが、今回の課題には必要なさそうなので、
また別の機会にでも、検討してみてください。
No.3
- 回答日時:
#1です。
Sheet1からSheet2 にコピーするのでしたか?
では、
Sub Re8130368d()
Dim rTgt As Range
Dim i As Long
Set rTgt = Range("A:A").SpecialCells(Type:=xlCellTypeConstants)
For i = 1 To rTgt.Areas.Count
rTgt.Areas(i).Resize(, 4).Copy Destination:=Sheets("Sheet2").Cells(i * 5 - 4)
Next i
Set rTgt = Nothing
End Sub
この回答への補足
ご回答ありがとうございます!
できました!今までのマクロはコードを見た時に大体どのように実行されているのかなとわかったのですが、貴方様のコードはマクロ初心者の小生にはチンプンカンプンです(笑)流石です!
ちなみに列数を5列や6列にするにはどのように変数を与えてやればよいでしょうか?
No.2
- 回答日時:
別件の続きのようですね。
数式を使っていないですし、列数固定ということなので、
簡単な方法が却って効率的です。
Sub Re8130368c()
Dim rTgt As Range
Dim i As Long
Set rTgt = Range("A:A").SpecialCells(Type:=xlCellTypeConstants)
For i = 2 To rTgt.Areas.Count
rTgt.Areas(i).Resize(, 4).Cut Destination:=Cells(i * 5 - 4)
Next i
Set rTgt = Nothing
End Sub
No.1
- 回答日時:
次のようなマクロでどうでしょう。
Sub 並び替え()
Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Dim i, n As Integer
i = 0
n = -4
Do
i = i + 1
If Left(WS1.Cells(i, "A"), 3) = "セット" Then
Setto1 = i
End If
Do
i = i + 1
If i > 500 Then Exit Do
Loop Until Left(WS1.Cells(i, "A"), 3) = "セット"
Setto2 = i - 1
Range(WS1.Cells(Setto1, "A"), Cells(Setto2, "D")).Copy
Do
n = n + 5
Loop Until WS2.Cells(1, n) = ""
ActiveSheet.Paste (WS2.Cells(1, n))
Application.CutCopyMode = False
i = i - 1
Loop Until i = 500
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) VBAで複数のExcelを1つのExcelにまとめる 1 2022/09/04 11:08
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Excel(エクセル) VBA 指定した列にある日時データから時間を削除する方法について 4 2022/04/14 11:17
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 2つの条件に合うセルにデータを転記したい 4 2022/12/02 11:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
電話番号の入力方式が違うデー...
-
VBAで色の付いているセルの行削除
-
AのセルとB行を比較して、一致...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルで特定の文字列が入っ...
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
完全一致したら代入するマクロ...
-
excel 小さすぎて見えないセル...
-
セルの色によって条件文をつけ...
-
エクセルVBA 最終行を選んで並...
-
エクセル 上下で列幅を変えるには
-
Excelのフィルター後の一番上の...
-
excel 同じ番号のデーターを横...
-
1つのシートで2つ目のマクロ
-
Excel グラフのプロットからデ...
-
エクセル マクロ オートフィ...
-
Excelで一致しない文字のみを返...
-
エクセル 数字のみ残したい
-
エクセル2016で時間を入力して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
Excel ウインドウ枠の固定をす...
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
エクセル2016で時間を入力して...
-
excel 小さすぎて見えないセル...
-
EXCELで最後の行を固定
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
エクセルマクロで偶数行(又は...
-
エクセルのセルに指定画像(.jpg...
-
罫線の斜線を自動で引くマクロ
おすすめ情報