- ベストアンサー
エクセルのテーブルを縦に直したい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと手抜きですが、こんなカンジでいかがでしょうか。 Sub teteyoko() Dim LineCounter As Integer Dim PutLineCount As Integer Dim wkColCount As Integer With ThisWorkbook LineCounter = 2 PutLineCount = 1 Do If .Sheets("会場横").Cells(LineCounter, 1).Value = "" Then Exit Do For wkColCount = 1 To 4 .Sheets("会場縦").Cells(PutLineCount, 1).Value = _ .Sheets("会場横").Cells(LineCounter, 1).Value .Sheets("会場縦").Cells(PutLineCount, 2).Value = _ .Sheets("会場横").Cells(LineCounter, 2).Value .Sheets("会場縦").Cells(PutLineCount, 3).Value = _ .Sheets("会場横").Cells(1, wkColCount + 2).Value .Sheets("会場縦").Cells(PutLineCount, 4).Value = _ .Sheets("会場横").Cells(LineCounter, wkColCount + 2).Value PutLineCount = PutLineCount + 1 Next wkColCount LineCounter = LineCounter + 1 Loop End With End Sub
その他の回答 (1)
- bunjii
- ベストアンサー率43% (3589/8249)
>やりたいデータは元データの行が何百行かあります。 提示の元データの範囲で同一シートへ返還後のデータを作成してみました。 H列に日付、I列に会場、J列に時間帯、K列にマークを抽出しました。 H3セルへ次の数式を設定します。 =IF(COUNTA($C$3:$F$12)>=ROWS(H$3:H3),OFFSET(A$3,INT((ROW()-3)/4),0),"") H3セルを右のI3セルへコピーします。 J3セルへ次の数式を設定します。 =IF(COUNTA($C$3:$F$12)>=ROWS(H$3:H3),INDEX($C$2:$F$2,1,MOD(ROW()-3,4)+1),"") K3セルへは次の数式を設定します。 =IF(COUNTA($C$3:$F$12)>=ROWS(H$3:H3),INDEX($C$3:$F$12,MATCH(H3,$A$3:$A$12,0),MATCH(J3,C$2:F$2,0)),"") H3:K3セルを同時に下へ必要数コピーすれば添付画像のような結果になります。
お礼
関数でもできるのですね!!! 本当にありがとうございます。 よく勉強します。
お礼
完璧にできました!! 本当にありがとうございます。 回答が早かったのでベストアンサーにさせていただきます。 よく勉強します。