Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10726 / 76734 ←次へ | 前へ→

【71553】Re:空白列の削除
回答  UO3  - 12/3/16(金) 19:53 -

引用なし
パスワード
   ▼はる さん:
こんばんは

とりあえずサンプルを2つ。
Sample1は、わかりやすいのではと思います。
Sample2は高速版です。コートにコメントをつけてありますが、わからなかったら質問してください。

なお、そちらでアップされたコードについては、今からみてみますね。

Sub Sample1()
  Dim j As Long
  Dim x As Long
  
  Application.ScreenUpdating = False
    
  With Sheets("Sheet1")
  
    x = .Cells(2, .Columns.Count).End(xlToLeft).Column 'リストのタイトル行の最終列番号
    
    For j = x To 1 Step -1 '最終列から逆に、各列をチェック
      'その列のセルで値があるセルがタイトル行のみなら列削除
      If WorksheetFunction.CountA(.Columns(j)) = 1 Then Columns(j).Delete
    Next
    
  End With
  
  Application.ScreenUpdating = True
  
End Sub

Sub Sample2()
  Dim w() As Variant
  Dim k As Long
  Dim i As Long
  Dim j As Long
  Dim x As Long
  Dim y As Long
  Dim wk As Variant
  
  Application.ScreenUpdating = False
    
  With Sheets("Sheet1")
  
    x = .Cells(2, .Columns.Count).End(xlToLeft).Column 'リストのタイトル行の最終列番号
    
    With .UsedRange
      y = .Cells(.Count).Row   'リストの最終行番号
    End With

    ReDim w(1 To y, 1 To x)     '現在のシートイメージが収まる縦横の配列
    
    For j = 1 To x
      If WorksheetFunction.CountA(.Columns(j)) > 1 Then
        'もし、タイトル行以外にも値があればその列を配列に左詰でセット
        k = k + 1
        For i = 1 To y
          w(i, k) = .Cells(i, j)
        Next
      End If
    Next
    .Range("A1").Resize(y, x).Value = w   'できあがった配列を一挙にシートに落とし込む
  End With
  
  Application.ScreenUpdating = True
  
End Sub

5 hits

【71549】空白列の削除 はる 12/3/16(金) 10:54 質問
【71553】Re:空白列の削除 UO3 12/3/16(金) 19:53 回答
【71587】Re:空白列の削除 はる 12/3/21(水) 9:13 お礼
【71556】Re:空白列の削除 UO3 12/3/16(金) 20:50 発言
【71592】Re:空白列の削除 はる 12/3/21(水) 17:00 質問
【71599】Re:空白列の削除 UO3 12/3/22(木) 11:56 発言
【71600】Re:空白列の削除 はる 12/3/22(木) 13:07 お礼
【71572】Re:空白列の削除 12/3/18(日) 18:37 回答
【71588】Re:空白列の削除 はる 12/3/21(水) 9:21 お礼
【71591】Re:空白列の削除 はる 12/3/21(水) 16:59 質問

10726 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free