
No.2ベストアンサー
- 回答日時:
こんな形でやってみました。
'--------------------------------------------------------
Option Explicit
Sub Tenki2()
'変数宣言とセット
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim r As Long, k As Long
Dim Midashi(4) As Variant, myData(4) As Variant
Dim TgtRow As Long
Set Ws1 = Worksheets(1)
Set Ws2 = Worksheets(2)
TgtRow = 2 'Sheet2の転記先は2行目から開始
'見出し行を格納
For k = 0 To 4
Midashi(k) = Ws1.Cells(1, k + 1)
Next k
Application.ScreenUpdating = False
'Sheet1のデータを上から下にループ
With Ws1
r = 2
Do While .Cells(r, 1).Value <> ""
For k = 0 To 4 'その行のデータをmyDataに格納
myData(k) = .Cells(r, k + 1)
Next k
For k = LBound(myData) To UBound(myData) 'Sheet2で、縦に転記
Ws2.Cells(TgtRow + k, 1).Value = Midashi(k)
Ws2.Cells(TgtRow + k, 2).Value = myData(k)
Next k
TgtRow = Ws2.Cells(Rows.Count, 1).End(xlUp).Row + 2 '次の転記開始行
r = r + 1
If r Mod 500 = 0 Then Application.StatusBar = r
Loop
End With
Application.StatusBar = ""
Application.ScreenUpdating = True
Ws2.Select
MsgBox "End."
End Sub
No.3
- 回答日時:
ほとんど数式(^^;
Sub Sheet2へ転記する()
Application.ScreenUpdating = False
Dim 最終行 As Long
最終行 = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Worksheets("Sheet2").Range("A:B").ClearContents
With Worksheets("Sheet2").Range("A2:A" & 最終行 * 6 - 6)
.FormulaR1C1 = "=IF(MOD(ROW(),6)=1,"""",INDEX(Sheet1!R1,MOD(ROW()-2,6)+1))"
.Value = .Value
.Offset(, 1).FormulaR1C1 = _
"=IF(RC[-1]="""","""",INDEX(Sheet1!C[-1]:C[3],(ROW()-2)/6+2,MOD(ROW()-2,6)+1))"
.Offset(, 1).Value = .Offset(, 1).Value
End With
Application.ScreenUpdating = True
End Sub
No.1
- 回答日時:
こんにちは!
一例です。
標準モジュールにしてください。
Sub Sample1()
Dim lastRow As Long, wS As Worksheet, myRng As Range
Set wS = Worksheets("Sheet1")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
With Worksheets("Sheet2")
.Range("A:B").ClearContents
Range(.Cells(2, "A"), .Cells((lastRow - 1) * 6, "A")).Formula = _
"=INDEX(Sheet1!A$1:F$1,,IF(MOD(ROW(C7),6)=0,"""",MOD(ROW(C7),6)))"
Range(.Cells(2, "B"), .Cells((lastRow - 1) * 6, "B")).Formula = _
"=INDEX(Sheet1!A:F,INT(ROW(A1)/6)+2,MOD(ROW(A1),6))"
With .Range("A:B")
.Value = .Value
End With
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1") = "ダミー"
.Range("A1").AutoFilter field:=1, Criteria1:="#VALUE!"
Range(.Cells(2, "A"), .Cells(lastRow, "B")).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilterMode = False
.Range("A1").ClearContents
End With
Application.ScreenUpdating = True
MsgBox "完了"
※ 1行ずつループすると相当の時間を要すると思いますので、
別の方法でやってみました。
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
空白のはずがSUBTOTAL関数でカ...
-
同じ名前(重複)かつ 日本 ア...
-
【マクロ】数式を入力したい。...
-
if関数の複数条件について
-
excel
-
Excelで4択問題を作成したい
-
エクセルシートの見出しの文字...
-
表計算ソフトでの様式の呼称
-
空白処理を空白に
-
【マクロ 画像あり】Exact関数...
-
エクセルでフィルターした値を...
-
【マクロ】既存ファイルの名前...
-
勤怠表について ABS、TEXT関数...
-
【マクロ】実行時エラー '424':...
-
Excel 複数のセルが一致すると...
-
Excel 日付の表示が直せません...
-
【マクロ画像あり】❶1つの条件...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報