表の奇数行だけを削除するよChatGPTと一緒に作ったやつ
この説明は、ChatGPTで作成しています。
概要
このマクロは、Excelの表から奇数行を削除して偶数行だけを残す処理を行います。アクティブなシートのデータを確認し、自動的に奇数行を取り除いて偶数行を再配置する仕組みです。
動作の流れ
画面更新を一時停止
処理中の画面のチラつきを防ぐため、最初に画面更新を停止します。データ範囲を確認
アクティブシートで、データが入力されている最後の行と列を自動的に特定します。これにより、操作対象の範囲を決定します。データを配列に保存
指定したデータ範囲を配列に保存します。この方法で効率的にデータを操作します。偶数行を抽出
配列の中から偶数行のデータだけを新しい配列にコピーします。これにより、奇数行を取り除いた状態を作ります。シートのデータをクリア
元の表データを削除し、奇数行が含まれる内容を完全に消去します。偶数行のデータを貼り付け
抽出した偶数行だけをシートに戻して新しい表を作成します。画面更新を再開
最後に画面更新を再開し、操作結果を画面に反映します。
注意点
実行後に元のデータは復元できません。実行前にデータを保存することをおすすめします。
このマクロは、データ量が多い場合でも効率的に処理を行うよう設計されています。
応用の可能性
このコードを少し変更すれば、奇数行を残したり、特定の条件に基づいた行を残すことも可能です。業務内容に合わせたカスタマイズが可能です。
関連リンク
Sub 表の奇数行だけを削除するよChatGPTと一緒に作ったやつ()
Application.ScreenUpdating = False
' アクティブシートを設定
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
' 最終行と最終列を取得
Dim lastRow As Long, lastCol As Long
lastRow = ws.Cells(ws.Rows.count, 1).End(xlUp).row
lastCol = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column
Dim table As Variant, table2 As Variant
' テーブル範囲を設定(見出し含めず)
table = ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).Value
' 偶数行を抽出してtable2に格納
Dim i As Long, j As Long, table2Row As Long
table2Row = 0
ReDim table2(1 To Int((UBound(table, 1) + 1) / 2), 1 To UBound(table, 2))
For i = 1 To UBound(table, 1)
If i Mod 2 = 0 Then
table2Row = table2Row + 1
For j = 1 To UBound(table, 2)
table2(table2Row, j) = table(i, j)
Next j
End If
Next i
' wsの2行目以降を削除
ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).ClearContents
' wsの2行目からtable2を貼り付け
ws.Range("A2").Resize(UBound(table2, 1), UBound(table2, 2)).Value = table2
Application.ScreenUpdating = True
End Sub
キーワード
#excel #vba #できること #奇数行削除 #偶数行抽出 #表操作 #マクロ #プログラミング初心者 #自動化 #エクセル操作 #データ削除 #効率化 #初心者向け #行操作 #仕事効率化 #セル操作 #条件分岐 #表整理 #時短
Procedure Name: Delete Only Odd Rows in a Table with ChatGPT
This explanation is created using ChatGPT.
Overview
This macro removes odd rows from an Excel table and retains only even rows. It analyzes the active sheet and automatically removes the odd rows, reconfiguring the table with even rows only.
Workflow
Pause Screen Updates
Screen updates are paused initially to prevent flickering during the process.Determine Data Range
The macro automatically identifies the last row and column with data in the active sheet, defining the range to process.Save Data to an Array
The data within the range is stored in an array for efficient processing.Extract Even Rows
The macro copies only even rows from the array into a new array, effectively filtering out the odd rows.Clear Original Data
The table data in the sheet is cleared entirely, removing all odd rows.Paste Even Rows
The extracted even rows are written back to the sheet, forming a new table.Resume Screen Updates
Finally, screen updates are resumed to reflect the changes on the screen.
Notes
The original data is unrecoverable after execution. Back up your data before running the macro.
This macro is designed to handle large amounts of data efficiently.
Potential Applications
With slight modifications, this code can preserve odd rows instead of even rows or filter rows based on specific conditions. It’s highly customizable for various business needs.
Related Links
Keywords
#excel #vba #possibilities #deleteoddrows #extractevenrows #tableoperations #macro #beginnerprogramming #automation #excelhandling #datadeletion #efficiency #beginnerfriendly #rowoperations #workefficiency #cellhandling #conditionalprocessing #tablecleanup