こんな感じの表が時々ありますね。
多分、見やすく配慮してくれていんだと思うのですが、
数字を大きい順に並べ替えたりすると、
どの商品かわからなくなってしまいます。
手入力で、商品ごとのコピーすれば良いのですが、
何十、何百行になったりすると、
とても面倒ですね。
このような、面倒だけど規則性のある作業は、
マクロが対応してしまいましょう!
↓全部のセルに商品番号がコピーされたので、並び替えも自由にできます!
使い方
1
- 下記のコードを個人用マクロブックに保存しましょう。 個人用マクロブック作成方法
2
- 対象のエクセル表を開いた状態でマクロを実行します。 F5 or ▶ボタンで実行
3
- 実行すると、インプットボックスで、 どの列が対象か?とどの列で最終行を判断するかの入力が促されます。 入力してエンターすると、空白に各品番が入力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub UnderBlankCopy() ' 変数宣言 Dim i As Long Dim Maxrow As Long Dim col As Long Dim targetcol As Long col = InputBox("何列目が対象ですか?") targetcol = InputBox("最終行は何列目で取得?") Maxrow = Cells(Rows.Count, targetcol).End(xlUp).Offset(1, 0).Row - 1 For i = 1 To Maxrow - 1 ' 処理 If Cells(i + 1, col).Value = "" Then Cells(i + 1, col).Value = Cells(i, col).Value End If Next End Sub |
処理の内容
-
最初は変数の宣言ですね。
-
インプットボックスで、何列目が対象かを入力 入力の値を変数col に入れておきます。
-
インプットボックスで最終行を判断するための列を入力してもらいます。 これにより、何回ループさせるか決めます。
-
IF文 まずは、今いるセルの1個したを確認したいので、 i + 1 としています。最初はiは1です。 なので、i+1 は、2ですね。2行目が””の場合=2行目が空白の場合となります。 2行目が空白の場合、 Cells(i + 1, col).Value = Cells(i, col).Value で1行目の値を、2行目に代入しています。 左辺が2行目、右辺が1行目ですね。
-
上記の処理をループさせています。
↓よろしければクリックお願いします🌼
にほんブログ村
コメント