見出し画像

表の奇数列だけを削除して偶数列だけを残すChatGPTと一緒に作ったマクロ

この説明は、ChatGPTで作成しています。

このプログラムは、Excelシートに含まれるデータの奇数列をすべて削除して、偶数列のみを残すVBAコードです。初心者にもわかりやすいように、コードの動作を順を追って解説します。


プログラムの説明

ステップ1: 画面更新を停止する

最初に、Application.ScreenUpdating = False という命令で画面の更新を停止します。これにより、コードが実行されている間、画面がチラチラするのを防ぎ、処理を速くすることができます。

ステップ2: アクティブシートを取得する

このプログラムでは、現在選択されている「アクティブシート」を操作対象とします。アクティブシートとは、Excelで現在開いているシートのことです。このシートを変数に設定して、以降の操作を簡単に行えるようにします。

ステップ3: データの範囲を特定する

次に、データが含まれる範囲を特定します。具体的には、データが入力されている最後の行と最後の列を計算します。この情報を使うことで、シート内のすべてのデータを正確に操作することが可能になります。

ステップ4: 奇数列を削除する

計算した列の範囲内で、奇数列を1列ずつ確認します。そして、列番号が奇数である場合、その列全体を削除します。この処理を最後の列から最初の列に向かって繰り返すことで、データを正しく詰めながら削除を行います。

ステップ5: 画面更新を再開する

最後に、Application.ScreenUpdating = True を実行して画面更新を再開します。これにより、削除後の結果がシート上に反映されます。


実行結果の具体例

例えば、元のデータが次のように並んでいたとします。

  • 列1: 名前

  • 列2: 年齢

  • 列3: 性別

  • 列4: 部署

このプログラムを実行すると、列1(名前)と列3(性別)が削除され、次のようなデータが残ります。

  • 列1: 年齢

  • 列2: 部署

つまり、奇数列(1列目と3列目)が取り除かれ、偶数列のみが残る結果になります。


プログラム全文

以下が、今回のプログラムで実行されている内容の全文です。

  1. 画面更新を停止します。

  2. アクティブシートを取得します。

  3. データの最後の行と列を特定します。

  4. 奇数列を削除します。

  5. 画面更新を再開します。


このプログラムのメリット

  • シンプルでわかりやすい処理:基本的な列操作を使っているため、初心者でも学びやすいコードです。

  • 業務効率化:奇数列を手作業で削除する手間を省き、作業時間を短縮します。

  • 応用可能:このコードを少し変更することで、列の削除だけでなく特定の列だけを抽出する処理にも応用できます。


関連リンク

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(1, 1), ws.Cells(lastRow, lastCol)).Value
    
    ' 偶数列を抽出してtable2に格納
    Dim i As Long, j As Long, table2Col As Long
    table2Col = 0
    ReDim table2(1 To UBound(table, 1), 1 To Int((UBound(table, 2) + 1) / 2))

    For j = 1 To UBound(table, 2)
        If j Mod 2 = 0 Then
            table2Col = table2Col + 1
            For i = 1 To UBound(table, 1)
                table2(i, table2Col) = table(i, j)
            Next i
        End If
    Next j

    ' ws全体をクリア
    ws.Cells.ClearContents

    ' 偶数列のデータを貼り付け
    ws.Range("A1").Resize(UBound(table2, 1), UBound(table2, 2)).Value = table2

    Application.ScreenUpdating = True
End Sub

ハッシュタグ

#excel #vba #できること #プログラミング初心者 #奇数列削除 #偶数列抽出 #列削除 #アクティブシート #セル操作 #最終行 #最終列 #自動化 #データ編集 #列操作 #初心者向けVBA #業務効率化 #画面更新 #Excel学習 #Excel作業効率化


英訳

Deleting Odd Columns Only with VBA

This explanation is created with ChatGPT.

This VBA program removes all odd-numbered columns from an Excel sheet, leaving only even-numbered columns. The steps below outline the process in a simple and beginner-friendly manner.


Step-by-Step Explanation

Step 1: Disable Screen Updating

The program starts by disabling screen updates using Application.ScreenUpdating = False. This prevents flickering and speeds up the processing time.

Step 2: Get the Active Sheet

The program works on the "active sheet," which refers to the currently selected worksheet. The active sheet is assigned to a variable, making subsequent operations easier.

Step 3: Identify the Data Range

The program identifies the last row and column containing data. This ensures that all data on the sheet is accounted for during processing.

Step 4: Delete Odd Columns

The program checks each column within the identified range and deletes columns with odd numbers. By iterating from the last column to the first, the data is shifted correctly as columns are removed.

Step 5: Re-enable Screen Updating

Finally, Application.ScreenUpdating = True is executed to resume screen updates, reflecting the changes made.


Example of Results

If the original data includes the following columns:

  • Column 1: Name

  • Column 2: Age

  • Column 3: Gender

  • Column 4: Department

After running the program, Columns 1 and 3 (odd-numbered) are removed, leaving:

  • Column 1: Age

  • Column 2: Department

Only even-numbered columns remain.


Benefits of the Program

  • Simple and clear process: The use of basic column operations makes this code easy to understand for beginners.

  • Efficiency: Eliminates the manual task of deleting odd-numbered columns, saving time.

  • Versatility: This code can be modified to perform other tasks, such as extracting specific columns.


Related Links

いいなと思ったら応援しよう!