締切済み エクセルVBA 空白行削除の処理方法がわかりません 2018/02/01 17:17 いつもお世話になります。 今、V列の8行目以下にデータが入っており、偶数行にデータが入っています。 最終行までの途中に空白行があり、データの入っている偶数行は残したまま、それ以外の行を削除したいです(添付写真)。 8行目から STEP 2ごとに Cells(i+2,22)が空白ならば i+1 行目とi+2 行目を削除 するForループでは時間がかかりすぎています。 早く処理できる方法があればご教示下さい。 宜しくお願い致します 画像を拡大する みんなの回答 (4) 専門家の回答 みんなの回答 tsubu-yuki ベストアンサー率46% (179/386) 2018/02/06 20:19 回答No.4 ちょっと難しく考えすぎていませんか。 こういう時こそ、エクセルの基本的な機能の出番だと思いますよ。 というわけで、サンプルデータを拵えるのが面倒なので提案だけ。 とりあえず図から見える範囲でZ列辺りに Z3セル:=IF(OR(Y3<>"",Y2<>""),"",1) ※行が分からないので、3行目からデータがある体で。 上記は一例。削除したい条件でフラグを立てられるような式に。 コレを全行に仕込む。 ※↑:Range("Z3:Z" & 最下行).Formula = "=IF(OR(Y3<>"""",Y2<>""""),"""",1)" 「最下行」には適切な行番号をどうぞ。 手打ちなのでダブルクォーテーションの数を間違ってるかも。 フィルタで「Z列が1」を抽出。 抽出されたものを削除。 フィルタを解除。 ※この辺はマクロの記録でどうぞ。 (必要ならZ列をClearContents) これで良いような気がするんですが、いかがなモノでしょう。 なお、一回だけの処理なら手作業の方が早いのは言うまでもないです。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 Chiquilin ベストアンサー率30% (94/306) 2018/02/01 22:35 回答No.3 素早く処理したい時は 削除する行を1ヶ所に集めた方がいいです。 フラグを立ててソートを掛ければ 後はいらない行を一括で削除す るだけですから 処理は断然速くなります。 質問者 お礼 2018/02/04 17:33 Chiquilin様 ご回答頂きありがとうございました。 r+1、r+2を一回ずつ削除していくのではなく、例えばどこか行を決めて削除したい行r+1、r+2にフラグ1を立てていき、最終行までForで回した後、フラグ1が立っている行をまとめて削除するイメージでしょうか。試してみたいと思います。 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 bunjii ベストアンサー率43% (3589/8249) 2018/02/01 20:50 回答No.2 >8行目から STEP 2ごとに Cells(i+2,22)が空白ならば i+1 行目とi+2 行目を削除するForループでは時間がかかりすぎています。 削除対象の列を限定すれば少しは早くなるかもしれません。 また、i+1行とi+2行を同時に削除する方法も試されると良いでしょう。 他人のアイディアに頼らず自分の応用力でトライ&エラーを繰り返してより良いコードにしてください。 尚、画像を添付しても元データと加工後のデータが比較できない状態では無意味になりますので元データ範囲のみの加工後のデータ範囲を表示することで解決策が見えてくるかもしれません。 質問者 お礼 2018/02/04 17:21 bunjii様 ご回答いただきありがとうございます。 i+1行とi+2行を同時に削除 で .ROWS(r+1 &":"& r+2) で若干早くなりました。 添付画像にかんしてはimogashi様もご指摘のように、アップするのであればわかりやすい説明、見やすい表示をしなければ無意味ですね。以後、しっかり考えたうえで貼り付けるようにします。 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 imogasi ベストアンサー率27% (4737/17070) 2018/02/01 18:27 回答No.1 http://h1r0-style.net/excelvba/howto-delete-rows-with-blank の記事を参考にして、やってみてください。VBAコードの考えが、結構むつかしいと思うので、もし判らなければ、>Forループで、やることで我慢せざるを得ないだろう。したくてもVBAでできないことはたくさんあるだろうすること。 削除という考えでなく、残したいデータを、別表にVBAで作るという考えでやって、処理完了時間が遅いかな。 写真を挙げるだけでなく、その説明をしておくこと。罫線は表示形式によって、引かれているのだろうね。 画像が暗く小さすぎて、よく見えないし。 質問者 お礼 2018/02/01 20:12 imogasi様 いつもありがとうございます。 リンク頂いた記事に沿って試してみました。 データ行が偶数行なので ForのStepを2とし、変数 Kuhakugyoを複数行 r、r-1としてみたら ほぼ得たい結果が有られました。 ありがとうございました。助かりました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンソフトウェアExcel(エクセル) 関連するQ&A VBAで空白行を削除する。 初めまして、VBA初心やです。なので具体的にご教授願います。環境WindoesXP SP3 EXCEL2010です。やりたい事Book1に空白行が沢山あるSheetが一枚あります。Sheetの中身は下記の通りです。 一行目に項目があります。n行目にも項目があります。nは、10個です。項目の下の行には、デターがあります。以下のようになっております。初めの位置はB2です。 B2 項目A 項目B 項目C 項目D・・・・・ 項番1 データ1 データ2 データ3 データ4・・・・・・ 項番2 データ1 データ2 データ3 データ4・・・・・・ 項番3 データ1 空白 データ3 データ4・・・・・・ 項番4 データ1 データ2 空白 データ4・・・・・・ 項番5 データ1 データ2 空白 空白・・・・・・ 項番6 データ1 データ2 空白 空白・・・・・・ 項番7 データ1 データ2 空白 空白・・・・・・ 項番8 空白 空白 空白 空白・・・・・・ ・ ・ ・ ・ ・ Bn 項目A 項目B 項目C 項目D・・・・・ 項番1 データ1 データ2 データ3 データ4・・・・・・ と続きます。この項番1は残して、項番8の様な空白セルが続く行だけ削除したいので、 以下のマクロを組みました。 Dim ii As Long Dim MaxRow(1 To 100) As Long Dim MaxCol As Long '============================ MaxRow(1) = Cells(Rows.Count, 2).End(xlUp).Row MaxRow(2) = Cells(Rows.Count, 21).End(xlUp).Row MaxRow(3) = Cells(Rows.Count, 22).End(xlUp).Row MaxRow(4) = Cells(Rows.Count, 23).End(xlUp).Row MaxCol = Range("IV4").End(xlToLeft).Column Application.ScreenUpdating = False '============================ For i = MaxRow(1) To 3 Step -1 '配列にした。 '============================ For j = 1 To MaxCol Step 1 '============================ If Cells(4, j).Value = "" Then GoTo Label22 'Else GoTo Label11 Label22: Range(4 & ":" & MaxCol).Delete Label11: Next j 'End If Next i Application.ScreenUpdating = True MsgBox "マクロが終了しました" End Sub しかし、ソートしてMaxRowの配列のいくつになるかを計算する処が判りません。 なので、空白行を削除できません。 ようするに、各項目(行)の空白セルがまちまちで(凹凸があり)、全ての項目が空白である処を探す事が出来ません。 何卒宜しくご教授願います。 VBAで空白行を削除する VBAでリストの空白行を削除するための適当なコードを探しているのですがどんぴしゃのものが中々見つかりません。ご教授下さい。 ブックBのシートBのリストにはA2~AN●まで値が入っています。 別のブックAからVBAで値を取り出し貼り付けています。 いくつかの方法を試しました。 (1)ブックを開いたときに空白行を削除 Sub Auto_Open() '空白行を削除 Dim lRow As Long Dim i As Long lRow = Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False For i = lRow To 2 Step -1 If Cells(i, 1).Value = "" Then Range(i & ":" & i).Delete End If Next i Application.ScreenUpdating = True End Sub 5分以上砂時計のままで結局終わりません。 強制終了させ再度ブックを開くと空白行は削除されているのですが、こんな動作では使うことができません。 (2)ブックAの値を貼り付けた後、空白行を削除し上書き保存する Sub エクスポート() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Range(Cells(5, 7), Cells(79, 46)).Select Selection.Copy 'コピー Workbooks.Open Filename:="\\パス\ブックB.xlsm" '貼り付け先ファイルオープン Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '貼り付け Dim lRow As Long Dim i As Long lRow = Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False For i = lRow To 2 Step -1 If Cells(i, 1).Value = "" Then Range(i & ":" & i).Delete End If Next i Application.ScreenUpdating = True '空白行を削除 ActiveWorkbook.Save '上書き保存 Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub (3)空白行を削除の部分は以下のコードも試しました Worksheets("SheetB").Range("A1").Select Set currentCell = Worksheets("sheetB").Range("A1") Do While Not IsEmpty(currentCell) Set nextCell = currentCell.Offset(1, 0) If Not IsEmpty(currentCell) Then 'カレントセルが空白でなく、 If IsEmpty(nextCell) Then '次のセルが空白のとき nextCell.EntireRow.Delete End If End If Set currentCell = currentCell.Offset(1, 0) Loop '空白行削除 宜しくお願い致します。 空白のセルを行削除する。EXCELマクロなのですが・・ VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。 まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム エクセルの行の削除を配列で高速化したい A列にID番号(012345等の文字列化した数字) B列に属性(A、B、C等の文字列) C列に数値 のようなデータがあります。 1行目はタイトル行です。 最優先されるキーをA列、2番目に優先されるキーをB列にして並べ替えてあります。 A列、B列のデータは重複するものがあります。 このデータを、 A列のID番号が同じだった場合、上の属性がA、次の行の属性がBの組み合わせだった場合のみ、下の行のC列の数値データを上の行のC列の数値に加算して、下の行を削除します。 以下のマクロを書き、うまくいきました。 Sub 集計() Dim i As Long, r As Long r = Cells(65536, 1).End(xlUp).Row Application.ScreenUpdating = False For i = r To 2 Step (-1) If Cells(i, 1) = Cells(i - 1, 1) Then If Cells(i, 2) = "B" And Cells(i - 1, 2) = "A" Then Cells(i - 1, 3) = Cells(i - 1, 3) + Cells(i, 3) Rows(i).Delete End If End If Next Application.ScreenUpdating = False End Sub しかし、データ数が多いので1分以上かかってしまいます。 多分、配列に取り込んで処理できれば飛躍的に高速化できるとは思うのですが、 V = Range(Cells(2, 1), Cells(r, 3)).Value と取り込んだあと、どう処理したらいいのかわかりません。 教えてください。 条件に一致すれば行を削除するVBA こんにちは、以下のVBAについて質問をさせてください!m(_ _)m(タイプミスがあったらすみません、処理は成功しています。) Dim data As Integer For data = Cells(Rows,Count 1).End(xlUp).Row To 2 Step -1 If Cells(data,29) = "おやつ" Then Rows(data).EntireRow.Delete End If Next おやつ 上記だと29列目に「おやつ」という文字が入っている行は消えるのですが、For data~の部分を For data = 2 To Cells(Rows,Count 1).End(xlDown).Row に変えると何も起こらなくなります。 上の行から処理するか下の行から処理するかの違いで、やっていることは同じだと思うのですが、なぜ上の行から処理をしようとするとうまくいかないのでしょうか…?!Step -1のようにどこかに+1というのを入れないといけないのでしょうか…? どなたかご教示いただけると大変嬉しいです、よろしくお願いいたします<(_ _)> excel2010の空白セルのある行の削除方法 Excel2010を使っております。 2列以上の多数の行からなるデータに、空白のセルがあちこちに散在している状態で、 ”検索と選択"→"ジャンプ"→"セル選択"で空白セルを指定して、行のみ削除をすると、いずれかの列が空白である行がOR条件で削除されてしまいます。 全部の列が空白(AND条件)の行のみを削除する方法を教えてください。(画像を添付いたします) 宜しくお願いいたします。 エクセルマクロ行削除 エクセル2013です。 以下の行削除マクロを作りました。 取得した 最終行が20行目として 最終列がZ列として セル Z20 の値が 1以上なら問題なく動作するのですが セル Z20 の値が 0 だとループして終了しません。 どこを修正しても、思うように動作しません。 どこを修正すれば、いいのでしょうか? よろしくお願いします。 Sub 行削除() Dim 最終行 Dim 最終列 Dim 対象行 最終列 = Cells(8, Columns.Count).End(xlToLeft).Column '8行目の最終列を取得 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 Application.ScreenUpdating = False '画面切替停止 For 対象行 = 10 To 最終行 If Cells(対象行, 最終列) = 0 Then Rows(対象行).Delete 最終行 = 最終行 - 1 '削除により最終行が1行減ったので最終行の値を1行減らす 対象行 = 対象行 - 1 '削除により対象行が1行繰り上がったので対象行の値を1行減らす Else End If Next 対象行 Application.ScreenUpdating = True '画面切替停止解除 End Sub EXCEL VBAの重複行削除について EXCEL2010を使用しています。 添付画像の「重複行削除 前」の表を、RemoveDuplicatesで下の様にコードを組んで A列で重複する行を見て重複する行を削除しています。 Public Sub 重複行削除() With WorkSheets(1) .Range(.Cells(1, 1), .Cells(8, 3)).RemoveDuplicates _ Columns:=1, Header:=xlYes End With End Sub すると、日付の新しいデータが削除され、古いデータが残ってしまいます。 (添付画像の「重複行削除 後」) ReniveDuplicates Columns:=Array(1,3) とした場合は、すべてのデータが残ってしまいます。 添付画像の「欲しいデータ」の表の様に、 日付の新しいものを残すように重複行削除は出来ないでしょうか? 詳しい方、どうか教えてください。 よろしくお願いします。 Excel 偶数番シートのA列が空白であるセル削除 Excel の1つのファイル内の偶数番シートのA列が空白であるセルを行ごと削除したいのですが、下のコードではうまく動かないです。 シート番号はSheet(2)から(90)までです。 Sub 空白行削除() Dim i For i = 2 To 90 Step 2 Worksheets(i).Activate Columns("A:A").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.EntireRow.Delete Next i End Sub Excel テーブル内の空白行の削除について テーブルの任意の行のデータを削除し、空白削除ボタン(cmd_Blank)をクリックすると削除したデータ行(空白行)を削除するVBAを作ったのですが空白行が1つの場合は問題なく動作するのですが(添付左)、 ・空白セルがあるとその行がすべて削除されてしまう(添付中央)。 ・空白行が2つ以上あるとエラーになってしまう(添付右) という問題に悩んでいます。 空白削除ボタンクリック時のコードは Private Sub cmdBlank_Click() ActiveSheet.ListObjects("T住所").DataBodyRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub になります。 添付の図がわかりにくいかと思いますが、ボタンクリックすると テーブル内の空白行があったら、その行のみ削除され、上詰めに したいということです。 どなたか教えていただきたいです。 Excelで空白行を削除したい 他の書類からExcelにコピペしたんですが、もとの書類の書式のせいか偶数行が全て空白行になっています。 実際に必要なデータは奇数行の各列に並んでいます。 見づらいので空白行(または偶数行でも同じ)を削除したいんです。 行数が500を超えるので、一行づつ行の削除をやっていると大変な手間です。 一発でやる方法はないでしょうか? エクセルVBAでデータ最終行取得方法 エクセルVBAでデータ最終行取得方法で良い方法を教えてください。 データの行数、列数は不定。 最多のデータ行の列も不定。 この条件で、データ最終行を取得するにはどうすればよいでしょうか? lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row では、A列の最終行に限定されます。 lastrow = ActiveSheet.Cells(1, "A").SpecialCells(xlLastCell).Row では、列の限定はありませんが、一旦データ入力後、削除した部分まで入ってしまいます。 lastrow = ActiveSheet.UsedRange.Rows.Count では、データ入力後、削除した部分まで入ってしまい、かつ、1行目など上部が空白の場合、不正確になります。 ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム VBAの行削除について VBAで行を削除したいです。 データが何百行かあって、その下から空白行が最終行までできています。 その空白行部分を削除したいのですが。 どのようにコーディングすればいいのですか? 条件によって行削除を繰り返し処理する 一行目がフィールド名で、Z列まで値の入っているデータがあります。 x列が""の場合はその行を削除する処理を最終行まで続けたいのですが、 ""行が2行以上続いているとFor~によって行を飛ばしてしまいます。 何か良い方法はありませんでしょうか? Sub 削除() Dim last As Long Dim row As Long last = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).row For row = 2 To last If Cells(row, 24).Value <> "" Then Rows(Format(row) + ":" + Format(row)).EntireRow.Deletesift:=xlUp End If Next End Sub VBAで行の削除 お世話になります。 下記の様に行を削除しようとしていますが、 行を削除していくと、1行ずつずれていく為、 結果全部削除されません。 どのようにしたらうまく(空白のセルの行のみ) 削除出来ますでしょうか。 ご教示頂きたく宜しくお願い致します。 記 For k = 2 To r If Sheets("sheet1").Cells(k, 9) = "" Then Rows(k).Select Selection.Delete Shift:=xlUp End If Next k 重複行を完全削除するエクセルのマクロ Sub sakujyo() Dim i, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 2).Value = Cells(ii, 2).Value _ And Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 5).Value = Cells(ii, 5).Value Then Dim iii As Byte iii = 1 Rows(ii).Delete Shift:=xlUp End If Next ii If iii = 1 Then Rows(i).Delete Shift:=xlUp iii = 0 Next i End Sub データーが下の表のように入っております。 A B C E F 1 1/26 a1234 fdsa 5000 C1 2 1/27 a4567 sdfa 4000 T2 3 1/28 a1234 dfsa 5000 C1 4 1/30 b4567 asdf 6600 A2 5 2/10 b4567 fsda 6600 A2 6 2/10 a1234 afds 5000 C1 B列、E列、F列が完全一致(重複1行目と3行目と6行目・4行目と5行目)で削除し結果的に2行目だけ残る方法がしたいのですが、このマクロですと少ないデータですとうまく動くのですが、『大量のデータを一気に削除出来ない』、『同じ重複が3つ以上のデータが多数ある場合データが削除されずに残ってしまう』エラーが出てしまいます。どうかお教えください。 空白行削除 宜しくお願いします。 1枚のファイルシートに14ブロックのデータが貼り付けてあります。各ブロック行の長さは違く、ランダムに貼り付けてあります。例えば、データ 何百行の空白 データ…と繰り返されており、約3万5千行ぐらいあります。 空白行削除で多分半分近くまで上に詰められれば良いのですが、たくさんあるのでマクロで教えていただければと思います。ネットでころがってるデータ試してみたのですが(1部) ENDLESSに実行されて、出来てるのかどうかも確認はとれてません。ちなみに自分のシートに貼ってあるデータはA列からAS列まであり数字、文字混在です。また各ブロックの終わりは集計行となっており、空白セルがまじってます。宜しくお願いします。 セルの値が指定条件なら対象行を削除するマクロ ボタンクリックでプロシージャーが起動します。 そのマクロの中で以下の2つの処理を追加させたいです。 マクロの記述を教えてください。 A~F列までデータが有ります。 1行目は項目で2行目からデータがあります。 行数は都度相違しますが10,000行はあります。 (1) F列の値は標準で、ここが0の場合その行全体を削除します。 入っている値の例 -1234→削除しない 345→削除しない 12346→削除しない 0→削除する セルの空白はぜったいありません。 (2)-1 E列の値は標準で英数字3ケタです。ところどころ空白があります。 E列の値が先頭7B以外は行全体を削除します。 7B1→削除しない 7B2→削除しない 7BW→削除しない 77C→削除 47B→削除 空白→削除 F列を優先なのでE列が7Bで始まっている行でも F列が0なら削除となります。 (2)-2 (2)-1と同じでE列の値は標準で英数字3ケタです。 ところどころ空白があります。 E列の値が 先頭 7Bと72以外 又は CとDと7B以外は 行全体を削除します。 のように(2)-1のように1条件ではなく2~複数になる。 それが1文字の場合、2文字の場合、3文字全部の場合がある F列を優先なのは(2)-1と同じです。 条件例 ・Cと73以外 ・CとFと72以外 ・Gと7Vと8D以外 ・Gと88と8D5以外 以下の記述ですが、(1)は思ったとうり動作しましたが ●の部分が分かりません。 現在の記述では7BB以外は全部行削除されてしまいます。 (2)-1と(2)-2の対応のために 記述内で(2)-1と(2)-2を 書き換える事が出来るような記述にしたいです。 あと凄く処理が遅いので高速化もしたいです。 よろしくお願いします。 Sub test01() 'A~K列のデータにて 'E,F,H,I,K列を列削除する Columns("E:F").Select Selection.Delete Shift:=xlToLeft Columns("F:G").Select Selection.Delete Shift:=xlToLeft Columns("G:G").Select Selection.Delete Shift:=xlToLeft 'データがA~F列になりました。 With ActiveSheet 'アクティブなシートについて x = .UsedRange.Cells(.UsedRange.Count).Row 'xに最終行を取得 For i = x To 2 Step -1 '最終行から2行目まで下から順に 'F列が"0"だったらその行を削除 If .Cells(i, 6) = 0 Then .Rows(i).Delete Next '繰り返し End With With ActiveSheet 'アクティブなシートについて x = .UsedRange.Cells(.UsedRange.Count).Row 'xに最終行を取得 For i = x To 2 Step -1 '最終行から2行目まで下から順に 'E列の値の先頭文字が"7B"でなかったら削除(空白の場合も削除) ●If .Cells(i, 5) <> "7BB" Then .Rows(i).Delete Next '繰り返し End With End Sub Excel VBA レコードの変り目のループ方法 どうぞ、よろしくお願いします。 Excel VBAプログラミング初心者です。 添付画像のようなデータの扱いについて教えてください。 B列の日付の新旧関係を比較して、その判定結果をD列に出力させようとしています。 例えば、2行目より3行目の日付が新しければ2行目のD列に「OK」と出力します。 逆に7行目が8行目より日付が新しければ7行目のD列に「NG」と出力します。 ただし、このループには条件があって、 C列のItem Noが同じものの範囲内で日付の新旧を比較するものですので 例えば、5行目と6行目はItem Noが異なるので、本来5行目には「OK」が入るようにしたいのですが「NG」となってしまいます。 また、10行目にはレコードがないので、9行目は本来「OK」としたいのですが、やはり「NG」となってしまいます。 ソースのloopの作り方が分からず困っております。 どう作成すれがよいかヒントをいただけないでしょうか。 以下は自分で作っているソースです。 -------------------------------------------------------------- Private Sub CommandButton1_Click() Dim i As Integer For i = 2 To 9 Step 1 If Cells(i, 2).Value <= Cells(i + 1, 2).Value Then Cells(i, 4).Value = "OK" Else Cells(i, 4).Value = "NG" End If Next i End Sub ------------------------------------------------------------- Excel VBAに詳しい人に質問です。 以下のようなFor文を使用して、F列が空白の場合、その行を削除するマクロを組んでいます。 しかし、他のシートなどデータが肥大になってきて、削除速度がかなり落ちました。 どうにか速度をあげる方法はないでしょうか? ワークシートの7~300の行でF列が空白の行を削除できれば良いです。 F列にはVLOOKUP関数で、検索に引っかからなかった場合に空白になるようにしています。 詳しい方アドバイスよろしくお願いします。 For k = 300 To 7 Step -1 If Worksheets("一覧").Cells(k, "F") = "" Then Worksheets("一覧").Rows(k).Delete End If Next k 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン ソフトウェア Excel(エクセル)Word(ワード)PowerPoint(パワーポイント)Access(アクセス)その他MS Office製品オフィス系ソフトPhotoshop(フォトショップ)Illustrator(イラストレーター)その他Adobe製品画像・動画・音楽編集ホームページ作成ソフト筆まめ・はがき作成フリーウェア・フリーソフトその他(ソフトウェア) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
Chiquilin様 ご回答頂きありがとうございました。 r+1、r+2を一回ずつ削除していくのではなく、例えばどこか行を決めて削除したい行r+1、r+2にフラグ1を立てていき、最終行までForで回した後、フラグ1が立っている行をまとめて削除するイメージでしょうか。試してみたいと思います。 ありがとうございました。