以下のような縦に並んだ表を、
(A列には、日付/NO、B列には文字列が入力されています。)
A B
-------------
1 │ 10月1日
2 │NO
3 │1 A
4 │2 B
5 │3 C
6 │10月2日
7 │NO
8 │1 D
9 │2 E
10│3 F
11│4 G
12│5 H
13│10月3日
14│1 I
15│2 J
16│10月4日
17│・ ・
18│・ ・
19│・ ・
20│・ ・
以下のように横に並び替えたい。
A B C D E F G
-----------------------------------------------------------------
1 │ 10月1日 10月2日 10月3日 10月4日 ・・・・
2 │NO NO NO NO
3 │1 A 1 D 1 I
4 │2 B 2 E 2 J
5 │3 C 3 F
6 │ 4 G
7 │ 5 H
8 │
9 │
日付ごとに項目数が異なるので、
どのようにマクロを組めばいいのか分からず困っております。。
ご回答よろしくお願い致します><!
No.2ベストアンサー
- 回答日時:
すんごい不細工ですが突貫で書いてみました。
いちおう動作確認済みです。Sub aaa()
Dim i As Long, Strow As Long, Edrow As Long
Dim LstCol As Long, LstRow As Long
Dim Rng As Range
i = 1
Do While Cells(i, 1).Value <> ""
If TypeName(Cells(i, 1).Value) = "Date" Then
Cells(i, 3).Value = 1
End If
i = i + 1
Loop
LstRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LstRow + 1, 3).Value = 1
Do
Strow = Cells(1, 3).End(xlDown).Row
Edrow = Cells(Strow, 3).End(xlDown).Row - 1
Set Rng = Range(Cells(Strow, 1), Cells(Edrow, 3))
LstCol = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Rng.Cut Cells(1, LstCol)
If Cells(Rows.Count, 1).End(xlUp).Row <> LstRow Then Exit Do
Loop
LstCol = Cells(1, Columns.Count).End(xlToLeft).Column
For i = LstCol To 3 Step -1
If Cells(1, i).Value = 1 Then
Columns(i).Delete
End If
Next i
Set Rng = Nothing
End Sub
3列目に日付のフラグを立ててます。
それで上から順に切り取り、貼り付けを繰り返す、という手作業イメージを
イメージした動きで。
No.1
- 回答日時:
ベタに処理するなら、別のシートへのコピーで処理していけば良いでしょう。
A列に日付が入ったセルのB列は空白でしょうから、各日付ごとに分けるのにそれが利用できるでしょうね。
別シートへの書き込みを、
sheet2!cells(YY,XX)=sheet1cells(Y,X)
としてやるような形。
データのシートでB列を上から見ていって、空白ならA列が日付かを判定させる。
※例えば日付欄が日付形式のデータならその値が2012/4/1の41000以上かどうか、などで判定出来る。
A列が日付ならXX=XX+2、YY=1。日付でないならYY=YY+1。
元データ行のA列をセル(YY,XX)に入れ、B列のセル内容をセル(XX+1,YY)に書き込む。
以上、A列が空白でない限りYを1つづつ増やしながら繰り返す。
要は、A列が日付だったら次にA列に日付がくるまでを下に入れていき、A列が日付だったら記入列を右に2列ずらして1行目に戻って続ける、ということです。
すぐのご回答本当にありがとうございます!!
CC_Tさんのおっしゃる通りSheet2に横の表として完成させることがベストです!!
なんとなくおっしゃっている事は分かるのですが、
本当に初心者なもので実際にどのような式や
VBAを入力すればいいのか。。
申し訳ございません。
可能であればもう少し具体的にご説明いただけないでしょうか><?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで設定時刻の入力がわかりません 2 2022/03/29 02:24
- ホームページ作成・プログラミング 横にリンク先を3つ並べたいのです 3 2022/04/06 21:10
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
- Excel(エクセル) Excelで質問です! 現在マクロを勉強中の初心者です。 以下のような表から、会社名が空白のもの以外 2 2022/06/14 12:16
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
VBAでのリスト不一致抽出について
-
VBマクロ 色の付いたセルを...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
エクセル VBA ユーザーフォー...
-
VBA A列にありB列にないものま...
-
B列の最終行までA列をオート...
-
複数処理 Worksheet_Change(ByV...
-
超難 日付に対するクロス集計
-
文字列の結合を空白行まで実行
-
VBA 値と一致した行の一部の列...
-
空白セルをとばして転記
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
エクセルVBA intersect colu...
-
VBAのFind関数で結合セルを検索...
-
オートフィルタをマクロで作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報