[[20180518155335]] 『別シートへ指定数だけ行をあけて飛ばしたい』(しゅう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別シートへ指定数だけ行をあけて飛ばしたい』(しゅう)

何卒よろしくお願いします。

以下のようなシートがあります。

   A      B
 品名    種類
鉛筆      5 
消しゴム   2
ボールペン 1
下敷き    3

これを別シートの表に飛ばしたいのですが、品名と品名のあいだを、種類の数だけ行をあけたいのです。

  品名       種類
鉛筆          5
0
0
0
0
0(5行の空き)
消しゴム       2
0
0(2行の空き)
ボールペン     1 (1の時は空きなし)
下敷き        3
0
0
0 (3行の空き)

この説明でおわかりになるでしょうか。
※0は空欄セルです。

関数で処理したいのですが、おちからをおかしください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 元になるシートに作業列を作る。
 C2セルに1、C3セルに
 =C2+B2*(B2>1)+1
 と入力してC3セルを下へフィルコピーする。
(ねむねむ) 2018/05/18(金) 16:26

 次に元シートがSheet1だとして別シートのA2セルに
 =IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!$C:$C,0)),"")
 と入力して下及び右へフィルコピーではどうか。
(ねむねむ) 2018/05/18(金) 16:29

Sub main()
'元シート=Sheet1
'別シート=Sheet2
    Dim c As Range, r As Range
    Sheets("Sheet2").Cells.Clear
    Set r = Sheets("Sheet2").Range("A1")
    For Each c In Sheets("Sheet1").Range("A:A").SpecialCells(2)
        r.Resize(, 2).Value = c.Resize(, 2).Value
        Set r = r.Offset(IIf(Val(c.Offset(, 1).Value) < 2, 1, Val(c.Offset(, 1).Value) + 1))
    Next c
End Sub
(mm) 2018/05/18(金) 16:47

おふたりありがとうございました!

今回は関数で対応したかった為、ねむねむ様のものでいかせていただきました。

助かりました!
(しゅう) 2018/05/18(金) 17:03


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.