
元データのD列の中で設定シートに記載されている文言を残し他の行を削除したいです。
元データは10,000行くらいあります。
D列に国名が入っているのですが、アジア圏だけ残して他の行は削除したいです。
残したい国名は【設定】というシートを作成しC列に記載しました。
以下記載してみたのですが、実行した結果、C4以降のセルは思った通りに動いたようですがC3セルに記載した国名だけ1行しか残らず削除されてしまいました。
どこを修正すればよいのか解らず。ご教示いただきたいです!!よろしくお願いいたします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub 不要な行を削除したい()
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
Dim i As Long
Dim m1 As Long
Dim m2 As Long
'元データと設定の最終行を求める
m1 = Worksheets("元データ").Range("D" & Rows.Count).End(xlUp).Row
m2 = Worksheets("設定").Range("C" & Rows.Count).End(xlUp).Row
With Worksheets("元データ")
'フィルタで一致するもののみ表示する
.Range("D5:D" & m1).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Worksheets("元データ").Range("C2:C" & m2)
'最終行から非表示になっている行を削除
For i = m1 To 2 Step -1
If .Rows(i & ":" & i).Hidden = True Then
.Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next
'フィルタ解除
.ShowAllData
End With
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは
ざっとしか見ていませんが・・・
オートフィルタのCriteriaRangeが「元データ」シートになっているのが、説明文とは違うように思われます。
これだと、もっと違う結果になっていてもおかしくなさそうな気がしますけれど?
蛇足ですが、10,000行あると、一行ずつ削除してゆく方法の場合は多少時間がかかるかもしれません。(削除対象となる行数によりますが)
Union等で範囲をまとめておいて、一気にまとめて消す方法にすれば、速度は上がります。また、この場合はチェックを最終行から上向きに行わなくてもすみます。
別法として、フィルターをかけた状態で、別のシートに全体をコピペすれば表示行だけがコピーされますので、こちらの方が簡単かつ速い可能性があります。
うわーー!!これとても良いですね!!
>別法として、フィルターをかけた状態で、別のシートに全体をコピペすれば表示行だけがコピーされますので、こちらの方が簡単かつ速い可能性があります。
こちらに書き直しをしてみます!
うまく書けるか心配ですがチャレンジしてみます!!
No.2
- 回答日時:
フィルタは表示だけのことなので 「非表示」とは違います。
私だったら
一行づつ見ていって、指定された文字があるか判定して、あったらその行は削除する を最後の行まで行う
という風にやります
ありがとうございます!!
確かにそのほうが確実ですよね。まとめて削除のほうが処理が早いかな?
と思ったのですが
思った結果が出ていない以上、一行ずつ見ていくように変更も考えてみます!
ありがとうござます
No.1
- 回答日時:
早速ありがとうございます!!大変勉強になりました。
今回設定シートを作成したのは、残したい国名や国数が変わる為そこで自由に設定できればと思ったからでした。
頂いたURLをちゃんと理解して応用できるよう勉強励みます。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
このQ&Aを見た人はこんなQ&Aも見ています
-
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
-
4
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
5
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
非表示の列をすべて削除するマクロ
Excel(エクセル)
-
8
【Excel VBA】特定の列以外を削除
Excel(エクセル)
-
9
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
10
エクセルで別シートにリスト化した文字列を含むセルを持つ行を削除する方法を教えてください。
Excel(エクセル)
-
11
VBAで特定の文字を含まない列の削除方法について
Excel(エクセル)
-
12
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
13
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
14
エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)
Excel(エクセル)
-
15
VBAで文字列を数値に変換したい
Excel(エクセル)
-
16
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
17
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
18
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
19
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
20
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数セルの入れ替え方法 excel vba
-
【VBA】条件に一致しない行を削...
-
【VBA】条件に一致しない行を削...
-
EXCELマクロで自動改行
-
Excel マクロ 検索結果を別シ...
-
excel2021で実行できないマクロ...
-
条件に合った行を削除するマク...
-
VBA 行削除した連番
-
VB.net
-
EXCEL2007マクロ/オートフィル...
-
WPSOffice_マクロの有効化について
-
VBAで保存しないで閉じると空の...
-
複数のマクロボタンをまとめて...
-
Excel マクロの編集がグレーに...
-
エクセル関数>参照ファイル名...
-
Excelのマクロでボタンを押すと...
-
マクロの保存先、開いてるすべ...
-
VBA Shapes コピーと名前
-
Excelマクロで、稼働中のマクロ...
-
エクセルのvbaにて thisworkboo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロで最終行を取得してコピ...
-
数値に見えるものはすべて数値...
-
【VBA】条件に一致しない行を削...
-
エクセルのデータがない行には...
-
エクセルで空白行を削除する ...
-
Excel VBAでオートフィルタで抽...
-
VB.net
-
【VBA】条件に一致しない行を削...
-
Excel マクロ 検索結果を別シ...
-
列から特定の文字列検索→該当以...
-
【マクロ】A列最終行までを、カ...
-
マクロにて指定の文字間の文字...
-
Excel97 指定した行だけマク...
-
EXCEL VBAでA列にある空白行よ...
-
vbaエクセルマクロについて she...
-
【至急】Excel 同一人物の情報...
-
エクセルで階層図を作る方法
-
各個体に対する平均値の自動計...
-
テキストファイル読み込みにお...
-
excel2021で実行できないマクロ...
おすすめ情報
ご指摘どおり正しくは↓↓
'フィルタで一致するもののみ表示する
.Range("D5:D" & m1).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Worksheets("設定").Range("C2:C" & m2)
でした。