ここから本文です

ExcelのVBAについて質問です。 当方、仕事で膨大なデータを処理しなければなら...

esp********さん

2019/4/1916:29:12

ExcelのVBAについて質問です。

当方、仕事で膨大なデータを処理しなければならない状況になり、急遽マクロ機能を学び始めました。ですが、日が浅いこともあり行いたい作業をコード化できずにいます。

どうかお力を貸してください。


やりたい作業ですが、
B~G列にデータ(数字)があり、F列に計算式で「該当」か「非該当」か表示してます。

F列で最初の「該当」を検出し、該当の行より上のデータを削除するというものです。
言葉では説明しづらいので画像も用意しました。


わかる方がいらっしゃいましたらよろしくお願い致します。

該当,Delete Shift,データ,マクロ機能,Srow As Long,Dim r As Range,非該当

閲覧数:
28
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

fro********さん

2019/4/1917:14:31

FとGが逆になっていませんか。

Srowに削除されても良い最初の行数を代入してください。
画像では17行目に見えますので17を代入しています。

Sub test()
Dim r As Range
Dim Lrow As Long, Srow As Long

Srow = 17
Lrow = Range("A" & Rows.Count).End(xlUp).Row

Set r = Range(Cells(Srow, 7), Cells(Lrow, 7)).Find(what:="該当", LookIn:=xlValues, LookAt:=xlWhole)
If Not r Is Nothing Then
Range(Cells(Srow, 2), Cells(r.Row - 1, 7)).Delete shift:=xlUp
End If
End Sub

質問した人からのコメント

2019/4/23 09:19:50

ご回答いただき誠にありがとうございます。

挙動はまさに考えていた通りでした。
今まで手作業でやっていたので、かなり期間をつかって処理していたのですが、このマクロのお陰でかなりの効率化につなげられると思っております。

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

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

aka********さん

2019/4/1916:58:46

説明と 添付の図が 違うようですが

Set Rng = Columns("F").Cells.Find("該当")
If Not Rng Is Nothing Then
R = Rng.Row - 1
Rows("1:" & R).Delete Shift:=xlUp
End If

これで 該当が 1行目から F列の該当のある行の上までの 行全体を 削除します。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる