![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
ざっくり。
交互に貼り付けるっていうより、
順番に縦に連結する、って感じでいいの?
Sub SAMPLE()
'シート名取得 コピペ元
s = ActiveSheet.Name
'データ列数
c = 2
'データ行数
r = 20
'シート追加
Sheets.Add After:=ActiveSheet
'コピペ先が決まってるなら 上の処理は削除、下の「'」を消してシート名入力
'Sheets("Sheet2").Select
'コピペ
i = 1
With Sheets(s)
Do Until .Cells(1, (i - 1) * c + 1) = ""
Range(.Cells(1, (i - 1) * c + 1), .Cells(r, (i - 1) * c + c)).Copy
Cells((i - 1) * r + 1, 1).Select
ActiveSheet.Paste
i = i + 1
Loop
End With
End Sub
求めていた動作になりました。ありがとうございます。
加えて質問よろしいでしょうか?
データのある同じシートには下の行にまだデータがありまして、それも縦に並べたいのですが、どのようにすればよいでしょうか?
(22行目から同様にデータが入っています)
No.3
- 回答日時:
> 加えて質問よろしいでしょうか?
> データのある同じシートには下の行にまだデータがありまして、それも縦に並べたいのですが、どのようにすればよいでしょうか?
> (22行目から同様にデータが入っています)
質問の画像だと30行近いデータ量のイメージですが…
・1データが21行以内である
・2段めのデータが22行目から始まる
という前提だけで即席で作るなら、
1段目の処理に手を加えて2段めを処理。
Sub SAMPLE_2()
'シート名取得 コピペ元
s = ActiveSheet.Name
'データ列数
c = 2
'データ行数
r = 20
'シート追加
Sheets.Add After:=ActiveSheet
'コピペ先が決まってるなら 上の処理は削除、下の「'」を消してシート名入力
'Sheets("Sheet2").Select
'コピペ
i = 1
With Sheets(s)
Do Until .Cells(1, (i - 1) * c + 1) = ""
Range(.Cells(1, (i - 1) * c + 1), .Cells(r, (i - 1) * c + c)).Copy
Cells((i - 1) * r + 1, 1).Select
ActiveSheet.Paste
i = i + 1
Loop
r2 = Selection.Row + r '1段目情報書き終わりの行情報
i = 1
Do Until .Cells(22, (i - 1) * c + 1) = ""
Range(.Cells(22, (i - 1) * c + 1), .Cells(r + 21, (i - 1) * c + c)).Copy
Cells((i - 1) * r + r2, 1).Select
ActiveSheet.Paste
i = i + 1
Loop
End With
End Sub
より汎用性を求めるなら、まだまだ手を加える必要はあるけどね。
とりあえず、これらをベースにいじれば急場はしのげるんでしょ?
No.2
- 回答日時:
こんにちは
回答ではありませんが・・・
>データ①
>データ②
>・・・
というのは、A列とB列の2列に並べ直したいという意味と解釈しました。
元のデータのあるシートを「Sheet1」、折返しの行数(=縦のデータ数)を「最大行」とするなら、別のシートのA1セルに
=OFFSET(Sheet1!$A$1,MOD(ROW()-1,最大行),INT((ROW()-1)/最大行)*2+COLUMN()-1)
の式を入れて、B1にコピーし、更にA1:B1を下方に必要なところまでフィルコピーすれば実現できると思います。
関数式の場合の利点は、マクロのようにいちいち実行しなくても、自動的に変更も反映される点でしょうか。
もしも、関数式で残さずに「セルの値」として欲しい場合には、「A:B列をコピー」 → 「値をペースト」することで、値を固定値化することもできます。
早速式を入れてみたのですが、ほとんど希望通りの動作になりました。ありがとうございます。
関数を使用する方法もあるのですね。
今回はデータ数があまりにも多く、フィルコピーが手間なので、今回の知識はまた別の機会に活かそうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 11:55
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで 自動的に◯や数字を...
-
【マクロ】2回実行したら、エ...
-
エクセルのツールバーから数値...
-
特定の文字列を含む、住所を抽...
-
Excel 2019 [オプション]の[リボンのユ...
-
祝日と土曜、日曜の合計をカウ...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
絶対参照
-
エクセルでCtrl+Tでテーブルの...
-
【マクロ】名前を保存する際に...
-
エクセルのクイックアクセスツ...
-
【マクロ】VLOOKUPにて参照元に...
-
Excel分数の表示について
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
Excelについて
-
マクロエクセルのブロック解除
-
Excelピボットテーブルの1行目
-
REGEXREPLACE関数について、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報