VBAを使って特定の行と列を削除した表を自動作成する

表の特定箇所だけを抜き出して表を作成する場合がありますが、
一度だけならまだしも何回も同じパターンで表を作成する場合、非常に面倒に感じます。
そんな時にボタンワンクリックで表が作成できると非常に便利です。
今回はワンクリックで特定箇所だけを抜き出して表を作成するサプリを作成しましたのでご紹介します。

サンプルアプリ実行動作

Excel上の赤枠の箇所に削除する行と列番号を設定して、
「特定の行と列を削除して表を作成する」ボタンをクリックすると
既存の表の隣に指定した行と列を削除した表が自動で作成されます。

サンプルコードの処理内容

処理の内容については以下の通りです。

すでに作成済みの表を削除する。
     ↓
削除行と列を指定してある箇所から行番号と列番号を取得して該当箇所を非表示にする。
     ↓
指定箇所が非表示になった表をクリップボードにコピーする
     ↓
元の表の右側にクリップボードにコピーされた表を貼り付ける
     ↓
貼り付けた表の文字の幅にあわせてセル幅を調整する
     ↓
クリップボードにコピーされた表をリセットする
     ↓
指定箇所を非表示にしたコピー元の表の行と列を表示に戻す

サンプルコード アプリの作成手順はこちら

Option Explicit

Sub RowClumnDel()

'すでに作成されている右側の表を削除する。
 Range(“K7:P22").Clear
'ループカウント変数を定義する
 Dim i As Integer

'指定行削除処理
'削除行を指定しているセル(赤枠箇所)から順番に行番号を取得して非表示にする
 For i = 3 To 8
  If Cells(4, i) <> “" Then
   Rows(Cells(4, i)).Hidden = True
  End If
 Next

'指定列削除処理
'削除列を指定しているセル(赤枠箇所)から順番に列番号を取得して非表示にする
 For i = 3 To 8
  If Cells(5, i) <> “" Then
   Columns(Cells(5, i)).Hidden = True
  End If
 Next

'指定した行と列を非表示にしたコピー元の表をコピーする
 With Worksheets(“Sheet1")
  '「C7」のセルから「H列の最終行(22行)」の範囲をクリップボードにコピーする
  .Range(.Range(“C7"), .Range(“H" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
 End With

'「Sheet1」シートの「K7」セルを選択して表を貼り付ける
 Sheets(“Sheet1").Select
 Range(“k7").Select
 ActiveSheet.Paste
'K列からP列を文字の幅にあわせてセル幅を調整する
 Columns(“K:P").AutoFit
'クリップボードに貼り付けた表をリセットする
 Application.CutCopyMode = False

'ワークシートを入れる変数を定義する
 Dim ws As Worksheet
'定義した変数に表を貼り付ける箇所のワークシート名をセットする
 Set ws = ThisWorkbook.Worksheets(“Sheet1")

'上で非表示にした行と列を表示に戻す
 ws.Rows.Hidden = False
 ws.Columns.Hidden = False

End Sub