- ベストアンサー
行を列で参照する
Sheet1に横6列で並んでいるデータがあります。 列は6列固定で、行はその時によって変動がありますが、少ない時でも500行はあります。 それを、 Sheet2のA列に参照させたいのです。 Sheet1 Sheet2 A1 →A1 B1 →A2 C1 →A3 D1 →A4 E1 →A5 F1 →A6 A2 →A7 B2 →A8 C2 →A9 . . . という感じに表示させたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet2のA1に =OFFSET(Sheet1!$A$1,(ROW()-1)/6,MOD(ROW()-1,6)) と入力して,下にコピー
その他の回答 (2)
- aokii
- ベストアンサー率23% (5210/22062)
Sheet2のA1に以下の式を入れて、左下にドラッグコピーしてみて下さい。 =INDEX(Sheet1!$A$11:$B$13,COLUMN(A1),ROW(A1))
お礼
ありがとうございます!
- Prome_Lin
- ベストアンサー率42% (201/470)
きっと、もっと、スマートなやり方があると思いますが、単純には、 Sub Test() Set s1 = Worksheets(1) Set s2 = Worksheets(2) r = 0 For i = 1 To s1.Cells(s1.Rows.Count, 1).End(xlUp).Row For j = 1 To 6 r = r + 1 s2.Cells(r, 1).Value = s1.Cells(i, j).Value Next j Next i End Sub 簡単なプログラムの説明です。 Set s1 = Worksheets(1) 一番左端のシートを「s1」(=「Sheet1」)にセット。 Set s2 = Worksheets(2) 左端から2番目のシートを「s2」(=「Sheet2」)にセット。 r = 0 行数カウント用。 For i = 1 To s1.Cells(s1.Rows.Count, 1).End(xlUp).Row 1行目から「Sheet1」の最終行まで処理。 For j = 1 To 6 「A」列から「F」列までを処理。 r = r + 1 1行追加。 s2.Cells(r, 1).Value = s1.Cells(i, j).Value 「Sheet2」の「r」行1列(=列「A」)に「Sheet1」の「i」行目、「j」列目の値を書き込んでいます。 これだけです。 ちょっと、恥ずかしくなるぐらい鈍くさいプログラムですので、きっと、他の方がもっとスマートなプログラムを提示されると思いますが、結果は出ています。
お礼
プログラムの説明まで、ありがとうございました! これで、勉強します!
お礼
ありがとうございます!