
複数「列」を削除高速化

うさこちゃん
条件に合う列を高速に削除したい場合にデータ量が大量にあると非常に削除が(かなり)遅い場合があります。
その場合は「Range」に削除データを貯めておいて一括して削除すると高速化できます。
①元データ

うさこちゃん
2行目に0のデータがある列を削除する。
| ヘッダ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 条件 | 2 | 1 | 0 | 1 | 5 | 0 | 0 | 5 | 0 | 1 | 0 |
| データ | データ | データ | データ | データ | データ | データ | データ | データ | データ | データ | データ |
②処理後データ

うさこちゃん
2行目の0のデータを列削除した結果。
| ヘッダ | 1 | 2 | 4 | 5 | 8 | 10 |
| 条件 | 2 | 1 | 1 | 5 | 5 | 1 |
| データ | データ | データ | データ | データ | データ | データ |
処理速度の違い

うさこちゃん
今回は以下のデータ件数で約10倍の速度差になりました。
列データ500件
行データ100件
削除対象100件
| サンプル① | 0.5273 |
| サンプル② | 0.0625 |
広告

IODATA GCFX ゲーミングモニター 24.5型 240Hz 1ms (HDMI/DP/VESA/チルト角調整) EX-GD251UH
【全ポート、HDMIとDisplayPortどちらも240Hzの高速リフレッシュレート対応!】HDMI、DisplayPortどちらも最大240Hzの高速リフレッシュレートに対応。1秒間に最大240回映像を書き換えるので、一般的な60Hzのディスプレイの4倍、144Hz対応のゲーミングディスプレイの約1.6倍も高速に映像を表示させることになり、なめらかで美しい映像を表示可能です。
【「AdaptiveSync」技術を搭載!】可変リフレッシュレート技術である「AdaptiveSync技術」を搭載したゲーミングモニターです。最大240Hzをサポートし、可変リフレッシュレートにより「ティアリング(映像のずれ)」や「スタッタリング(カクつき)」を抑え、快適にゲームをプレイすることができます。
【どこから見ても鮮やか!広視野角HFSパネル採用】上下左右178°の広視野角なHFSパネルを採用。見る位置や角度による色やコントラストの変化が少なく、どこから見ても映像を鮮明に映し出します。
【オーバードライブ機能で応答速度1ms[GTG]を実現】ADSパネルの中でも応答速度の速いパネルを採用!「ダイナミックOD」機能を「トップスピード」に設定することで、応答速度を最大1ms[GTG]まで高めることが可能です。「トップスピード」設定は応答速度を最優先にしたモードのため、映像によっては逆残像や色ズレが目立つ場合があります。画質とのバランスを重視する方には、「レベル3」以下の設定がおすすめです。「レベル3」設定時でも、応答速度は2ms[GTG]と高速で、快適なゲームプレイを実現します。
【内部フレーム遅延が約0.03フレーム(約0.1ミリ秒)】超解像機能やオーバードライブ機能を有効にしていても、内部遅延時間が約0.03フレーム(約0.1ミリ秒)※を実現。特に動きの速いゲームでは、操作と表示のズレが少なく、威力を発揮します。また、現在の設定の遅延時間を画面に表示して確認することができます。※フルHD/リフレッシュレート240Hzの時の値。
【「AdaptiveSync」技術を搭載!】可変リフレッシュレート技術である「AdaptiveSync技術」を搭載したゲーミングモニターです。最大240Hzをサポートし、可変リフレッシュレートにより「ティアリング(映像のずれ)」や「スタッタリング(カクつき)」を抑え、快適にゲームをプレイすることができます。
【どこから見ても鮮やか!広視野角HFSパネル採用】上下左右178°の広視野角なHFSパネルを採用。見る位置や角度による色やコントラストの変化が少なく、どこから見ても映像を鮮明に映し出します。
【オーバードライブ機能で応答速度1ms[GTG]を実現】ADSパネルの中でも応答速度の速いパネルを採用!「ダイナミックOD」機能を「トップスピード」に設定することで、応答速度を最大1ms[GTG]まで高めることが可能です。「トップスピード」設定は応答速度を最優先にしたモードのため、映像によっては逆残像や色ズレが目立つ場合があります。画質とのバランスを重視する方には、「レベル3」以下の設定がおすすめです。「レベル3」設定時でも、応答速度は2ms[GTG]と高速で、快適なゲームプレイを実現します。
【内部フレーム遅延が約0.03フレーム(約0.1ミリ秒)】超解像機能やオーバードライブ機能を有効にしていても、内部遅延時間が約0.03フレーム(約0.1ミリ秒)※を実現。特に動きの速いゲームでは、操作と表示のズレが少なく、威力を発揮します。また、現在の設定の遅延時間を画面に表示して確認することができます。※フルHD/リフレッシュレート240Hzの時の値。
最新の価格・在庫状況はAmazonでご確認ください。
サンプル①
Dim ObjThisSh As Object
Dim LngColMax As Long
Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
With ObjThisSh
LngColMax = .Cells(2, .Columns.Count).End(xlToLeft).Column
For LngIndex = 2 To LngColMax
If .Cells(2, LngIndex).Value = 0 Then
'列を削除
.Columns(LngIndex).Delete
End If
Next LngIndex
End With
サンプル② 高速化
Dim ObjThisSh As Object
Dim LngColMax As Long
Dim LngIndex As Long
Dim RngDelete As Range
Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
With ObjThisSh
LngColMax = .Cells(2, .Columns.Count).End(xlToLeft).Column
For LngIndex = 2 To LngColMax
If .Cells(2, LngIndex).Value = 0 Then
If RngDelete Is Nothing Then
Set RngDelete = .Cells(2, LngIndex)
Else
Set RngDelete = Union(RngDelete, .Cells(2, LngIndex))
End If
End If
Next LngIndex
If Not RngDelete Is Nothing Then
'RngDelete.EntireColumn.Select 'テスト用 削除予定列を表示させる
'列を一括削除
RngDelete.EntireColumn.Delete
End If
End With
サンプル③ さらに高速化したコード(配列判定方式)
改善ポイント
VarValues = Range(...).Valueで行2を一気に配列化。
→.Cells()を何度も参照しないので 劇的に高速化。- 判定は配列内で完結するため、Excelとのやり取り(COM呼び出し)が最小限。
- 最後にまとめて
Delete実行。
Dim ObjThisSh As Object
Dim LngColMax As Long
Dim LngIndex As Long
Dim RngDelete As Range
Dim VarValues As Variant
Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
With ObjThisSh
' 行2を配列に読み込み
LngColMax = .Cells(2, .Columns.Count).End(xlToLeft).Column
VarValues = .Range(.Cells(2, 2), .Cells(2, LngColMax)).Value
' 配列で判定(For文はセルにアクセスしないので速い)
For LngIndex = 1 To UBound(VarValues, 2)
If VarValues(1, LngIndex) = 0 Then
If RngDelete Is Nothing Then
Set RngDelete = .Cells(2, LngIndex + 1)
Else
Set RngDelete = Union(RngDelete, .Cells(2, LngIndex + 1))
End If
End If
Next LngIndex
' 一括削除
If Not RngDelete Is Nothing Then
RngDelete.EntireColumn.Delete
End If
End With
免責事項
本記事のサンプルプログラムは、学習・参考用として掲載しているもので、動作や結果を保証するものではありません。 利用する場合は、ご自身の環境に合わせて確認しながらお使いください。万が一トラブルや損害が発生した場合でも、当サイトでは責任を負いかねます。





































※本文中に記載の会社名・製品名・サービス名・ゲームタイトル名等は、各社の商標または登録商標であり、権利は各社に帰属します。
※サンプルはテストを行っていますが、すべての環境での動作を保証するものではありません。ご利用は自己責任でお願いいたします。
※本記事の仕様・価格・対応状況等は執筆時点で確認できた情報をもとに掲載しています。最新の情報はメーカー公式サイトをご確認ください。
※当サイトでは一部の記事において、アイキャッチ画像にAI生成を使用しています。
※Amazonのアソシエイトとして、うさねこ散歩は適格販売により収入を得ています。