[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ A列で指定した日付の行を削除』(ALO)
マクロ初心者です。
マクロで、A列で「1900/01/00」と入ってる行から下を、一気に削除したいです。
表示は「1900/01/00」ですが、セルには「1900/1/0」と入ってます。
A列 B列 C列 D列
配送予定日 帳日 工務店名 名前
2016/05/26 2016/06/02 A社 あいう
2016/05/27 2016/05/24 B社 かきく
2016/05/27 2016/05/24 F社 さしす
1900/01/00 1900/01/00 0 0
1900/01/00 1900/01/00 0 0
下記のマクロを途中に組みましたが、うまく動きません。
どこを変更すればいいでしょうか?
' 不要な行を削除
Dim i As Long, x As Long
With Sheets("Sheet1").Range("A2").Select
x = .Cells(Rows.Count, "A").End(xlUp).Rows 'A列最終行を取得
For i = x To 1 Step -1 '下から順に
If Cells(i, 1) = "1900/1/0" Then .Rows(i).Delete End If Next i End With
< 使用 Excel:Excel2013、使用 OS:Windows8 >
おはようございます。
1900/01/00 のセルは実際には 0 が入っています。 初めに 0 の見つかった行より下を全て削除するなら以下のコードで一括で削除できます。
Sub test()
With Sheets("Sheet1") If WorksheetFunction.CountIf(.Range("A:A"), 0) Then .Range(WorksheetFunction.Match(0, .Range("A:A"), 0) & ":" & Rows.Count).Delete Shift:=xlUp End If End With
End Sub
シートは指定でしたね、修正しました。(7:02)
後質問者さんのコードを活かすなら、 Withを使う時は、 With Sheets("Sheet1") のようにします。 Rangeは可変にしたいので記述してはいけません。 Selectも記述してはいけません。
x = .Cells(Rows.Count, "A").End(xlUp).Rows も x = .Cells(Rows.Count, "A").End(xlUp).Row ですね。
If Cells(i, 1) = "1900/1/0" Then も If Cells(i, 1) = 0 Then です。
(sy) 2016/06/27(月) 06:46
もし、説明の通り、1900/01/00 と表示されているセルの中身が 日付型データで 1900/1/0 と入っている。 表示書式で yyyy/mm/dd と指定してある ということであれば、以下の操作で目的が達成されます。 この操作をマクロ記録すれば、一連の処理コードが生成されます。
1.A列を選択して、検索と置換 -> 置換 2.検索する文字列に 1900/1/0 、置き換え後の文字列には何もいれず空白のままにしておきます。 3.オプションをクリックし、セルの内容が完全に同一のものを検索する にチェックをいれて すべて置換 4.この状態で 検索と選択 -> 条件を選択してジャンプ -> 空白セル を選んで OK 5.この状態で 削除 -> シートの行の削除
(β) 2016/06/27(月) 09:16
オートフィルターを利用した以下の手順でもいいですね。 これもマクロ記録でコードが生成されます。
1.A1 を選択して データタブ -> フィルター 2.A列で絞り込み。1900年(または 1900/01/00 ?) 【だけに】チェックしてOK 3.抽出されたタイトル行以外の行をすべて選択して削除 4.データタブ -> フィルター
(β) 2016/06/27(月) 09:22
行が削除できた時は感動しました。
マクロってとっても、奥が深いですね。
(ALO) 2016/06/27(月) 10:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.