[[20040717141954]] 『行を1行毎に削除したい』(ありん) ページの最後に飛ぶ

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

 

『行を1行毎に削除したい』(ありん)
   A        B
 1
 2 日付
 3 名称a  売価
 4      原価
 5 名称b  売価
 7      原価
 6 名称c  売価
 7      原価 
 ・・・198まであります。

 上記のようなファイルがあり、編集をしたいのですが
 原価は必要ありません。
 A4から、2行毎にA198までを削除をしたいのですが、マクロは勉強中のため
 Ctrl を押しながら行を一つ一つクリックで反転し、記録を取りながら行ったら・・・
 すっごい長くなってしまいました(TT)

 もっと短く、簡潔に出来ないでしょうか?

 そのような場合には、オートフィルタを使ってはいかがでしょうか。
 オートフィルタをかけたあとで、A列の▼を押して、空白を選択
 A列が空白の行だけが出てきますので、あとは行削除で。
 (川野鮎太郎)

 川野鮎太郎さん、お返事ありがとうございます。
 省略して書いてしまった私が悪いのですが、名称の下には
 コードが数字3桁で書いてあります。
 オートフィルタを使用したことが無いのですが、空白以外にも
 使用できるのでしょうか?
 もしよろしかったら、やり方を教えていただいてもよろしいでしょうか?

   A        B
 1
 2 日付
 3 名称a  売価
 4  001   原価
 5 名称b  売価
 7  011   原価
 6 名称c  売価
 7  123   原価 
 ・・・198まであります。

 (ありん)

 ということでしたら、オートフィルタをしたあとで、B列でフィルタして
 原価を選択して、行削除でどうでしょうか。
 (川野鮎太郎)

 横から失礼します。
 万が一、売価・原価共に数値の場合に関数で、

 任意の列の3行目に
 =INDIRECT("A"&ROW()+ROW(A1)-1)
 その右隣の列に
 =INDIRECT("B"&ROW()+ROW(A1)-1)

 として両方のセルをフィルダウン
 A3,A5,A7...、奇数行を抽出します。
 (jindon)

 ( ̄0 ̄;アッ売価、原価って略するためで、実際は金額が入っているってこともありますね。
 てっきり文字で入っているものとばかり思い込んでいました。(^_^A;
 jindonさん、フォローありがとうございます。
 (川野鮎太郎) 

 (川野鮎太郎)さん。あくまでも、万が一です!
 私も、フィルターとかエクセルが持っている機能で可能であれば、
 そちらを優先するほうですので。
 (jindon)

 jindonさん、承知しております^^

 ありんさん、これはあくまで参考のためです。

 どうしてもマクロで一気にってことであれば

 Sub gyosakujo()

 Dim i As Long

 For i = 4 To 198 / 2 '4行目から削除として

    Rows(i).Delete Shift:=xlUp

 Next i

 End Sub

 (川野鮎太郎)

 川野鮎太郎さん、、外してたらほんとにごめんなさいなんですけど、、、
 行を削除する時は、したから上がってきた方がいいんじゃないんですか?
 外してたら、ごめんなさいm(__)m
(夏目雅子似)

 Sub gyosakujo()

 Dim i As Long

 Application.ScreenUpdating = False

    For i = Range("C65536").End(xlUp) / 2 To 4 Step -2  '4行目から削除として

       Rows(i).Delete Shift:=xlUp

    Next i

 Application.ScreenUpdating = True

 End Sub

 ちょっと気になったので・・・
 >Range("C65536").End(xlUp) / 2 To 4 Step -2 
最終行÷2は、まずくありません?
(ケン)

 。゚゚(´□`。)°゚。わーん!!
 また、動きません(>_<) 
 C列はもともとないようですよ(*´ノェ`)こっそり
 Aに変えても、型が一致しませんって怒られちゃいます(ToT)
 (川野鮎太郎)


 Range("A65536").End(xlUp).Row To 4 Step -2 
ですね。
ただし、偶数行の確認をしないとペケですが。
川野さんのはStep 1 で「/2」だから動く、と考えるべき。
(KAMIYA)


衝突しました。

 わかりました。
 Range("a65536").End(xlUp).Row To 4 Step -2 ですね。
 ただし最終行が不要だとしてになりますね。
 (川野鮎太郎)

 KAMIYAさん、フォローありがとうございます。m(__)m
(がぁ〜〜んの夏目雅子似)

 夏目雅子似さんの削除は下からって言うのは、セルのスクロール数を減らして
 処理を早くするってことでしょうか。だとすれば、_〆\(..;) メモメモ
 (川野鮎太郎)

 確かじゃないんですけど、、重複とか判断する時に、上からだと、
 なくなっちゃうとか、なんとか、、
 そんなのが、関係なかったら、いいんでしょうけどね。。
 行を削除する時は「下から」って聞いた様な気がしたもので。。^_^;
 しかし、相変わらずの「どっ滑り回答」でしたぁ。。ごめんなさいねm(__)m
(夏目雅子似)

 皆さんありがとうございます。
 関数でも可能だったんですね^^;
 でも、マクロってすごい!!
 大変勉強になりました^^
 (ありん)

 (ありん)さん解決して何よりデス。
 
TO 川野鮎太郎さま 夏目雅子似さま
これが「3の倍数行を削除」であれば
下からのほうが単純になって都合が良いのです。
上から削除は・・・行番号が変化していくのでややこしい。
処理速度は?です。
(KAMIYA)

 あぁ〜〜ん、川野鮎太郎さんに聞かれてた時に
 こう答えていたら、私のかぶもあがったかも?なのにぃ。。(冗談汗)
 でも、Range("C65536").End(xlUp) / 2
 ってしてたら、、駄目ですよね(>_<)
 でも、そいう理由があったのですね。大変勉強になりました。
 理由は知らなかったけど、行の削除は下からが基本らしいですわ。。(>_<)
 _〆\(..;) メモメモ
 KAMIYA様 いつも、いつも、フォローありがとうございます。
(夏目雅子似)

コメント返信:

[ 一覧(最新更新順) ]


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