[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『関数で「0」表示されたところも削除したい』(まさこ)
下記のマクロで空欄の行が一括削除されるように出来て隣のシートに転記されるように出来ています。
しかし、S列〜Y列に関数を入れて計算し値を表示しなければならなくなりました。そこで
S列〜Y列に関数で「0」表示されたところも削除したいことを追加したい場合にどのように
追加したらよいのか、教え頂けませんか、よろしくお願いします。
Sub 空欄の行が一括削除される()
Dim i As Long, LastRow As Long, myRng As Range
With Worksheets("マクロ 空欄の行が一括削除される")
Worksheets("元DATA").Cells.Copy
.Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
LastRow = .UsedRange.Rows.Count
Set myRng = Range(.Cells(2, "J"), .Cells(LastRow, "AS"))
myRng.Replace what:=0, replacement:="", lookat:=xlWhole
'//▼ココから空白行削除//
Set myRng = Nothing
For i = 2 To LastRow
If WorksheetFunction.CountA(Range(.Cells(i, "J"), .Cells(i, "AS"))) = 0 Then
If myRng Is Nothing Then
Set myRng = .Cells(i, "J")
Else
Set myRng = Union(myRng, .Cells(i, "J"))
End If
End If
Next i
If Not myRng Is Nothing Then
myRng.EntireRow.Delete
End If
.Activate
.Range("J2").Select
End With
MsgBox "完了"
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows10 >
え! ( ̄▽ ̄); これでよいのでわ? 何か不都合でも。。。 それとも。。。 他は入力されててもS〜Yがゼロなら消してしまうのでせうか? 勘違いでしたらすみません。
(隠居じーさん) 2019/01/13(日) 15:53
ちょっと、事情が完全には理解できないんですが、
いままでは、数式のセルも値に変換してから処理してよかったので問題が無かったが、 今度は、数式は壊さないように、行削除をしなければならなくなったと言う事なんでしょうか?
そして数式のままだと、0が返ってきているセルは、空白に変換できないので、行削除できなくなって困った・・ですか?
だとすると、空白と0しかない場合なので、それらの合計が36個なら削除するってことでいいですか?
>.Range("A1").PasteSpecial Paste:=xlPasteValues ↓ .Range("A1").PasteSpecial Paste:=xlPasteAll
>If WorksheetFunction.CountA(Range(.Cells(i, "J"), .Cells(i, "AS"))) = 0 Then
if .Evaluate("SUM(COUNTIF(" & .Range(.Cells(i, "J"), .Cells(i, "AS")).Address & ",{"""",0}))") = 36 then
でどうなりますか?
( 半平太) 2019/01/13(日) 16:12
xlPasteValues 値を変更して
xlPasteAll 全てを貼り付けるにかえればよかつたのですね。
空白と0しかない場合なので、それらの合計が36個なら削除するってことでいいですか?
36個ということは考えていませんでした。
また、ご教授下さいませ、重ねてお礼申し上げます。
隠居じーさんさん、説明が不足していたようです。すみませんでした、ご協力
ありがとうございました。
(まさこ) 2019/01/13(日) 17:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.