エクセルのあるシートに


1 2 3 ・・・・
B F A
C W H
D L L
E P M

という表があるとします。
横と縦は何百行になると可能性があります。
また、上記表は空欄である可能性もあります。
これを別シートで

1B
1C
1D
1L
1P
2F
2W
2L
2P
3A
3H
3L
3<

というように並び替えるマクロを組みたいと思います。

どのように組めばよろしいでしょうか。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2018/03/06 19:04:12
  • 終了:2018/03/13 19:05:05

回答(1件)

id:smithy250 No.1

smithy250回答回数37ベストアンサー獲得回数72018/03/07 01:09:38

ポイント100pt

Function test()

'元のシートの名前
originalSheetname = "sheet1"
'処理先のシートの名前
fixedSheetname = "sheet2"

Worksheets(originalSheetname).Activate

'行数と列数を調査
With Worksheets(originalSheetname).UsedRange
maxRow = .Rows(.Rows.Count).Row
maxCol = .Columns(.Columns.Count).Column
End With

'全範囲を配列にぶっこむ
all = Range(Cells(1, 1), Cells(maxRow, maxCol))

'処理先の行数
fixedRow = 1

For tempCol = 1 To maxCol
For tempRow = 2 To maxRow
Worksheets(fixedSheetname).Cells(fixedRow, 1).Value = all(1, tempCol)
Worksheets(fixedSheetname).Cells(fixedRow, 2).Value = all(tempRow, tempCol)
fixedRow = fixedRow + 1
Next
Next
End Function

id:smithy250

最大の行数をD1に入れて
A1==INT( (ROW()-1)/($D$1-1))+1
B1==HLOOKUP(A1,Sheet1!$A$1:最終セル,MOD(ROW()-1,$D$1-1)+2,FALSE)
で心ゆくまでフィルを楽しむ方法もあります。
ただし、空欄が0になります。

2018/03/07 01:29:10
id:martytaka

ありがとうございます!園児が遅くなり申しわけありません。試してみます!

2018/03/12 16:57:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません