Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
横並びの値を縦に並び替えたい
投稿日時: 18/10/17 15:54:18
投稿者: hikari12101210

VBA初心者です。
横並びの値を縦に並び替えたいのですが、
2行目のように、行に一つも値がないとその行自体が表示されません。
上記のような、一つも値がない行も並び替えに含めることは可能でしょうか?
 
【シート1】
A1| No.1|りんご|いちご|メロン|・・・・
A2| No.2|   |   |   |・・・・
A3| No.3|りんご|いちご| |・・・・
 

 
【シート2】
A1| No.1|りんご|
A2| No.1|いちご|
A3| No.1|メロン|
A4| No.2| | 👈この行が表示されるようにしたいです
A5| No.3|りんご|
A6| No.3|いちご|
A7| No.3| |
 
-----------------------------------------
Sub 並び替え()
Set st1 = Sheets("セリフ")
Set st2 = Sheets("セリフ2")
For i = 1 To st1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To st1.Cells(i, Columns.Count).End(xlToLeft).Column
n = n + 1
st2.Cells(n, 1) = st1.Cells(i, 1)
st2.Cells(n, 2) = st1.Cells(i, j)
Next
Next
End Sub
-----------------------------------------

回答
投稿日時: 18/10/17 16:47:51
投稿者: 半平太

>For j = 2 To st1.Cells(i, Columns.Count).End(xlToLeft).Column
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~~~
                   ここが1列目になったりするんで、No.2が出て来なくなる
 
最低でも2列目を確保する必要がある(以下、Max関数を使った例)
 
For j = 2 To Application.Max(2, st1.Cells(i, Columns.Count).End(xlToLeft).Column)

投稿日時: 18/10/17 18:25:37
投稿者: hikari12101210

半平太さま
 
希望通りのものができました!
早々にお教えいただきありがとうございました。

トピックに返信