Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8121 / 13644 ツリー ←次へ | 前へ→

【34989】末尾のセルが「0」の行を自動的に削除するマクロを作る方法ってありますか? miku02 06/2/17(金) 17:58 質問[未読]
【34998】Re:末尾のセルが「0」の行を自動的に削除す... じゅん 06/2/17(金) 20:11 回答[未読]
【35003】じゅんさん、ありがとうございます miku02 06/2/17(金) 21:23 お礼[未読]
【35001】Re:末尾のセルが「0」の行を自動的に削除す... かみちゃん 06/2/17(金) 20:33 発言[未読]
【35002】かみちゃん、ありがとうございます miku02 06/2/17(金) 21:18 お礼[未読]
【35053】Re:末尾のセルが「0」の行を自動的に削除す... じゅん 06/2/20(月) 13:25 発言[未読]
【35005】Re:末尾のセルが「0」の行を自動的に削除... ponpon 06/2/18(土) 1:46 発言[未読]
【35014】Re:末尾のセルが「0」の行を自動的に削除... Kein 06/2/18(土) 13:32 発言[未読]
【35019】Re:末尾のセルが「0」の行を自動的に削除... ponpon 06/2/18(土) 21:11 発言[未読]

【34989】末尾のセルが「0」の行を自動的に削除す...
質問  miku02  - 06/2/17(金) 17:58 -

引用なし
パスワード
   末尾のセルが「0」の行を自動的に削除するマクロを作る方法ってありますか?


2006/2/14 9:51 482000 482000 482000 482000 1
2006/2/14 9:52 483000 483000 483000 483000 1
2006/2/14 9:53 484000 484000 484000 484000 6
2006/2/14 9:54 0 0 0 0 0
2006/2/14 9:55 0 0 0 0 0
2006/2/14 9:56 481000 483000 481000 483000 4
2006/2/14 9:57 484000 484000 484000 484000 2
2006/2/14 9:58 482000 482000 480000 480000 14
2006/2/14 9:59 479000 479000 479000 479000 5
2006/2/14 10:00 0 0 0 0 0
2006/2/14 10:01 476000 477000 476000 477000 2

このようなデータを整理しているのですが、末尾のセルが「0」の行を自動的に削除するマクロを作りたいのですが、どの様な方法がありますか?

よろしくお願いします。


参考になるHPなどを紹介して頂けると助かります。

【34998】Re:末尾のセルが「0」の行を自動的に削除...
回答  じゅん  - 06/2/17(金) 20:11 -

引用なし
パスワード
   ▼miku02 さん:
末尾のセルが「0」の行
参照列をA列と過程した場合
(1行目から10行目限定)

public sub Test
  Dim i As Integer
  
  For i = 1 To 10
    If Right(Cells(i, "A").Value, 1) = "0" Then
      Rows(i).Value = ""
    End If
  Next i
End Sub

とすると、出来そうな気がします。
(思いつきで書いたので、正しく動作しなかったらごめんなさい)

【35001】Re:末尾のセルが「0」の行を自動的に削除...
発言  かみちゃん  - 06/2/17(金) 20:33 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>末尾のセルが「0」の行を自動的に削除するマクロを作る方法ってありますか?

「末尾のセル」というのは、必ずしもA列ではないですよね?
また、末尾のセルが"0"の場合は、行全体を値のクリアなどではなく、削除ですよね?

となると、方法はいろいろあるかと思いますが、以下のような感じでできます。

Sub Macro1()
 Dim lngRow As Long
 
 For lngRow = Range("A65536").End(xlUp).Row To 1 Step -1
  If Cells(lngRow, "IV").End(xlToLeft).Value = 0 Then
   Rows(lngRow).Delete
  End If
 Next
 MsgBox "処理を終了しました"
End Sub

これ以外に、空白処理をしてから並べ替える、とか
0かどうかを作業列にフラグを立てて、一括して削除する
などいろいろ方法はあります。

【35002】かみちゃん、ありがとうございます
お礼  miku02  - 06/2/17(金) 21:18 -

引用なし
パスワード
   貼りつけて実行したら綺麗に末尾が0の行が削除されました!

感動しました!!


昨日まで徹夜で処理していた作業だったので驚きました。。。。。

本当にありがとうございます!


ただ私にはまだ内容が理解できませんでした。。。。。

A65536とか、どこから来るのかわかりません。。。。。。


私もこういった技術を身につけたいのですが、かみちゃんは、本などを読んで勉強されたんですか?

【35003】じゅんさん、ありがとうございます
お礼  miku02  - 06/2/17(金) 21:23 -

引用なし
パスワード
   残念ながら、これは動作しませんでした。

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

【35005】Re:末尾のセルが「0」の行を自動的に削除...
発言  ponpon  - 06/2/18(土) 1:46 -

引用なし
パスワード
   こんばんは。
すでに解決済みですが・・・
勉強のために作ってみました。

>これ以外に、空白処理をしてから並べ替える、とか
>0かどうかを作業列にフラグを立てて、一括して削除する

G列が0かどうかで判断しています。

Sub test() 'フラグを立てて一括削除 作業列AG列
  Dim myR As Range
  
  Set myR = Range("G1", Range("G65536").End(xlUp)).Offset(, 26)
    With myR
       .Value = "=IF(G1=0,1,"""")"
       .SpecialCells(3, 1).EntireRow.Delete
       .ClearContents
    End With
End Sub

’=========================================================

Sub test1() 'クリアして並べ替え
  Dim myR As Range
  Dim r As Range
 
  Set myR = Range("A1", Range("A65536").End(xlUp))
  Range("A:A").Insert
  myR.Offset(, -1).Value = "=row()"
  For Each r In myR.Offset(, 6)
   If r.Value = 0 Then
     r.EntireRow.ClearContents
   End If
  Next
  With Columns(1)
   .Resize(, 8).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin, DataOption1:=xlSortNormal
   .Delete
  End With
End Sub

【35014】Re:末尾のセルが「0」の行を自動的に削除...
発言  Kein  - 06/2/18(土) 13:32 -

引用なし
パスワード
   おせっかいですが、いちおうワンポイント・アドバイスします。

Sub test() 'フラグを立てて一括削除 作業列AG列
  On Error Resume Next
  With Range("G1", Range("G65536").End(xlUp)).Offset(, 26)
    .Formula = "=IF(G1=0,1,"""")"
    .SpecialCells(3, 1).EntireRow.Delete
    .ClearContents
  End With
  If Err.Number <> 0 Then MsgBox "G列に値が0の行はありません", 48
  '↑これは、あってもなくてもいいです。
End Sub

* SpecialCellsメソッドは、対象となるセルが無いとエラーになります。
なので、エラートラップをかけておくのが定石です。
あと数式を埋め込むなら Value より Formula を使います。

【35019】Re:末尾のセルが「0」の行を自動的に削除...
発言  ponpon  - 06/2/18(土) 21:11 -

引用なし
パスワード
   こんばんは。
>おせっかいですが
とんでもありません。
このコードもKeinさんのコードのまねです。
これからも気がつかれましたら、
>ワンポイント・アドバイス
をお願いします。また一つ学習しました。

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

【35053】Re:末尾のセルが「0」の行を自動的に削除...
発言  じゅん  - 06/2/20(月) 13:25 -

引用なし
パスワード
   ▼かみちゃん さん miku さん:
>「末尾のセル」というのは、必ずしもA列ではないですよね?
mikuさんがご質問された内容は、各セルに入力された内容だったのですね。
てっきり、一つの塊かと思いました。

私自身も勉強になりました。

8121 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free