[[20140925104308]] 『列の削除』(ぱん) ページの最後に飛ぶ

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

 

『列の削除』(ぱん)

      A         B        C        D        E       ・    ・
     No.     商品名  在庫   値段  会社名
 2    1        ●●   20    \1000     S社

 3    2        ××   50    \5000     E社    

 4    3        ▲▲   40    \2800     A社 

 5    4        △△   80    \1900     S社

 6    5

 7    6

 8    7        ○○   90    \6000     B社

 上記の場合、A列にはNo.入力されています。しかし、B列以降が空欄の場合列6・7行の削除をしたいのですが・・・

 そこでマクロ実行後に下記のようにしたいのですが。

      A         B        C        D        E       ・    ・
      No.    商品名  在庫   値段  会社名
 2    1        ●●   20    \1000     S社

 3    2        ××   50    \5000     E社    

 4    3        ▲▲   40    \2800     A社 

 5    4        △△   80    \1900     S社

 6    5     ○○   90    \6000     B社

 7  

 8          

 6・7行目を削除して8行目を6行目にするが、A列のNo.は追番になるようにしたいのです。

 しかし必ず2行目からNo.1が入るとは限りません。7行目からNo.1・2・3となる場合もあります。

 ご教授おお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 >7行目からNo.1・2・3となる場合もあります。
 のときは 2 〜6 行はどうなっているのでしょうか。
(Mook) 2014/09/25(木) 11:21

 Mookさん

 >2〜6 行はどうなっているのでしょうか。
 確認事項など文書が入っています。

 雛形自体は変わらないのですが、複数の人が入力しているので書き方等がさまざまで、申し送りなどで行の挿入をしてしまう人がいるので。。。

 なので、2〜6行目とも限らないのです・・・

(ぱん) 2014/09/25(木) 11:43


 そうなると、
 >B列以降が空欄の場合列6・7行の削除をしたいのですが・・・
 はできると思いますが、
 >A列のNo.は追番になるようにしたいのです。
 は詳細なルールが必要だと思います。(追番は連番のことかな?)

 2行目以降で B列以降がからの行は必ず削除してよいのでしょうか。
 削除した行の直前の番号から後の番号を、全部振りなおしてよいのでしょうか。
(Mook) 2014/09/25(木) 11:59

 Mookさん

 >詳細なルールが必要だと思います。(追番は連番のことかな?)
  必ず2行目からと決まっていればいいんですけどね。。。
  連番です。

 >2行目以降で B列以降がからの行は必ず削除してよいのでしょうか。
  削除で大丈夫です。

 >削除した行の直前の番号から後の番号を、全部振りなおしてよいのでしょうか。
  全部No1〜になるように振りなおしたいと思います。
  例として、5〜8行目、10〜15行目が空欄の場合もあったり、3・8・12行が空欄だったりもして複数行の削除が必要な場合もあります。
(ぱん) 2014/09/25(木) 12:57

 B列を選択して、Ctrl + Gで空白セルを選択。
 行の削除を行った後、A列の番号を振りなおすのではどうですか?
  
(HANA) 2014/09/27(土) 16:29

 HANAさん

 マクロを応用して別シートから一部の文字を転記するボタンを作成しました。

 できれば同様にボタン1つで削除・No.振り直しを作成したいと考えています。

 理由として使用者が年配の方が多く、別な操作をして肝心な文書等を消されて保存されては困るなどの意見がでたため。。。です。。。
(ぱん) 2014/09/28(日) 09:33

 HANA さんいつもフォローありがとうございます。
 HANA さん提示の方法をマクロの記録にすれば、それで十分のような気もしますが。

 確認の質問しっぱなしで忘れていたので、とりあえずのサンプルです。

 Sub Sample()
    Dim lastDeleteRow
    Dim r
    lastDeleteRow = Rows.Count

    Application.ScreenUpdating = False
    For r = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
        If Application.CountBlank(Cells(r, "B").Resize(1, 1000)) = 1000 Then
            Rows(r).Delete
            lastDeleteRow = r
        End If
    Next

    If IsNumeric(Cells(lastDeleteRow - 1, "A").Value) Then
        For r = lastDeleteRow To Cells(Rows.Count, "A").End(xlUp).Row
            Cells(r, "A").Value = Cells(r - 1, "A").Value + 1
        Next
    Else
        MsgBox "再採番するための番号情報がありません。"
    End If
    Application.ScreenUpdating = True
 End Sub

(Mook) 2014/09/28(日) 10:05


 Mookさん

 コンパイルエラーとなりlastDeleteRowの部分が選択されました。。。。

 マクロの記録で確認したのですが、B列以降を選択したときに行を挿入してある箇所も選択されてしまい申し送り等が消えてしまい、できませんでした。。。
(ぱん) 2014/09/28(日) 10:38

 End Sub 以降はコピーミスです。
 削除してください。
(Mook) 2014/09/28(日) 10:44

 Mookさん

 If Application.CountBlank(Cells(r, "B").Resize(1, 1000)) = 1000 Then
 でデバックになりました。

 空白セルを数えて?サイズの変更?←Resizeがいまいち理解できずです。。。

 理由が分からず、ご教授おねがいします。
(ぱん) 2014/09/28(日) 11:43

 エラー停止時のエラーメッセージを提示してください。
 一応こちら(2010)では動いているのですが。

 あっ、もしファイルの拡張子を xls にしているのなら、1000 を 255 に変更してください。
 (Columns.Count -1) の方がスマートかな。
(Mook) 2014/09/28(日) 13:39

 Mookさん

 拡張子を xls にしていました。1000 を 255 に変更したら動きました。

 ありがとうございました。
(ぱん) 2014/09/28(日) 15:05

コメント返信:

[ 一覧(最新更新順) ]


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