大量にデータがあって、関数かマクロで解決できないかと悩んでいます。
下記の内容について、解決方法をどなかか教えていただけないでしょうか?
A列をタイトルとして繰り返し、B列以降を行列入れ替えしたいです。
Sheet1に元データがあり、Sheet2に並び替えたデータを出したいと思っています。
<元データ>
A列 B列 C列 D列 E列
(1行) 会社名 開始日 終了日 担当者 連絡日
(2行) A社 9/2 12/5 山田 7/13
(3行) B社 9/1 11/5 8/30
(4行) C社 10/1 佐藤 6/30
(以下続く)
<並び替えたデータ>
A列 B列 C列
(1行) A社 開始日 9/2
(2行) A社 終了日 12/5
(3行) A社 担当者 山田
(4行) A社 連絡日 7/13
(5行) B社 開始日 9/1
(6行) B社 終了日 11/5
(7行) B社 担当者
(8行) B社 連絡日 8/30
(9行) C社 開始日 10/1
(10行) C社 終了日
(11行) C社 担当者 佐藤
(12行) C社 連絡日 6/30
※実際のデータはE列で終わりではなく20~30列くらいまで続きます。
※このタイプのデータが複数あり、項目数や内容は固定ではありません。
※A列の会社名は空欄はありません。B列以降の項目は空欄の場合があります。
No.1ベストアンサー
- 回答日時:
こんにちは!
VBAでの一例です。
元データはSheet1にあり、Sheet2に表示させるとします。
単純にループさせているだけです。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, j As Long, cnt As Long
Dim lastCol As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To .Cells(1, Columns.Count).End(xlToLeft).Column
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
wS.Cells(cnt, "B") = .Cells(1, j)
wS.Cells(cnt, "C") = .Cells(i, j)
Next j
Next i
End With
wS.Range("C:C").NumberFormatLocal = "m/d" '←★
End Sub
※ 注意点として・・・
質問文では「数値セル」は「日付」(シリアル値)しかない!という前提でSheet2のC列表示形式を「日付」としています。
(「★」の行)
別途「数値」として表示しなくてはならないセルがある場合は
少し変更があります。
まずはこの程度で・・・m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Excel(エクセル) エクセルで最初に値が入っているセルを見つける方法はありますか? 2 2023/07/18 14:58
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LEFT関数とIF関数の組み合わせ...
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
エクセルで住所を県と市・郡と...
-
エクセルの列末のデータだけ表...
-
エクセルで最初の行や列を開け...
-
エクセルで複数列の検索をマク...
-
エクセルでセル12個間隔で合...
-
エクセルのシートの大きさを変える
-
リストからデータを紐付けしたい
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
CSVファイルの「0落ち」にVBA
-
エクセルマクロPrivate Subを複...
-
横軸を日付・時間とするグラフ化
-
EXCEL VBA 文字列から電話番号...
-
Excelの行数、列数を増やしたい...
-
えABのある列って
-
【マクロ】【VBA】条件付き書式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報