プロが教える店舗&オフィスのセキュリティ対策術

こんばんは、エクセルのマクロについてお伺いします。

現在
A1:支店名 B1:連番 C1:在庫数 全部で1000行位入力があります。
・A列には支店名
・B列には連番は1・2・3~と1000件位
・c列には在個数にはそれぞれ1桁から2桁の数字

【質問】
在庫数の数だけその連番の行を増やしたい。
例えば、
A2:東京支店 B2連番:1 C2在庫数:3
だとすると2行目のあとに2行挿入し在庫数が3なので下記のように3行にしたい。

A2 東京支店 B2連番 1 C2 在庫数 1
A3 東京支店 B3連番 1 C3 在庫数 空欄
A4 東京支店 B4連番 1 C4 在庫数 空欄

何せ数が多いのでマクロをお教え頂ければ助かります。
※その際、支店名と連番は同じ物がはいるとありがたいです。
※在庫数は空欄で構いません。
マクロでなくても方法があればお教え下さい。

よろしくお願い致します。

A 回答 (2件)

こんばんは!


C列の在庫数だけA・B列を表示して、C列には必ず「1」が連続する最初の行のみ表示すれば良いわけですかね?

一応そういうことだとしての一例です。
データは2行目からあるとしています。

Sub test()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(i, 3) > 1 Then
Rows(i + 1 & ":" & i + Cells(i, 3) - 1).Insert
End If
Next i
i = Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 3) > 1 Then
i = i + Cells(i, 3) - 1
End If
For i = 2 To i
If Cells(i, 3) <> "" Then
Cells(i, 3) = 1
End If
If Cells(i, 2) = "" Then
Cells(i, 1) = Cells(i - 1, 1)
Cells(i, 2) = Cells(i - 1, 2)
End If
Next i
End Sub

こんな感じではどうでしょうか?
尚、一旦マクロを実行すると元に戻せませんので、別Sheetにコピー&ペーストしてマクロを試してみてください。

参考になれば良いのですが・・・m(__)m

この回答への補足

tom04 様

早速のご回答ありがとうございます。
只今試してみましたが完璧でした。
ありがとうございます。

1つ追加でうかがいたいのですが、
実際のデータは職場にあり、
見出しのタイトルが今回質問した(支店名・連番・在庫数)と若干相違します。

1行目がタイトルでABCの並びはこの通りです。
お教えいただいたマクロで問題ないでしょうか?

よろしくお願い致します。

補足日時:2011/04/06 23:18
    • good
    • 0
この回答へのお礼

tom04 様

早速のご回答ありがとうございます。
只今試してみましたが完璧でした。
ありがとうございます。

1つ追加でうかがいたいのですが、
実際のデータは職場にあり、
見出しのタイトルが今回質問した(支店名・連番・在庫数)と若干相違します。

1行目がタイトルでABCの並びはこの通りです。
お教えいただいたマクロで問題ないでしょうか?

よろしくお願い致します。

お礼日時:2011/04/06 23:39

No.1です!


続けてお邪魔します。
補足を読ませていただきました。

前回のコードは2行目以降を操作するようにしていますので、
1行目はどんなタイトルでも(タイトルがあってもなくても)構いません。

まずデータの最終行から上の行に向かってC列の数値より1行少ない行をを挿入しています。
次に2行目以降下に向かってC列にデータがあれば「1」を表示させ
B列(本来はA列でも良かった)が空白であれば1行上のデータを表示させるようにしていますので、
データがA~C列(C列は数値)の2行目以降にありさえすれば同じような動きになるはずです。

お役に立てば良いのですが。m(__)m
    • good
    • 0
この回答へのお礼

tom04 様

追加に気づいて下さりありがとうございます。
お礼にも同じ文面を記載してしまいました、すみません。

マクロの意味までお教えいただきありがとうございます。
明日までの仕事でしたので、本当に助かりました。

ありがとうございました。

お礼日時:2011/04/06 23:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!