|
▼ごん さん:
ご迷惑をおかけしました。
列バージョンです。
列処理ということになると、フィルターは適していないと思われますので配列処理。
ただし、データは処理されますが、2行目で結合されているセルはそのままになりますので
2行目結合列を対象列とした場合、具合が悪いケースがでてくるかもしれません。
配列を使わず、物理的な列削除を行えば、この心配はなくなりますが、できればこのままにしたいですねぇ。
Sub SampleV2()
'配列方式
Dim myA As Range
Dim lCell As Range
Dim z As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim w() As Variant
Dim vCols As String
Dim allB As Boolean
With ActiveSheet.UsedRange
Set lCell = .Cells(.Cells.Count)
End With
Set myA = Range("A3", lCell)
vCols = getCols(lCell.Column)
ReDim w(1 To lCell.Row, 1 To lCell.Column)
For j = 1 To lCell.Column
allB = False
If InStr(vCols, vbTab & j & vbTab) > 0 Then
If WorksheetFunction.CountBlank(myA.Columns(j)) _
= myA.Rows.Count Then allB = True
End If
If Not allB Then
k = k + 1
For i = 1 To lCell.Row
w(i, k) = Cells(i, j).Value
Next
End If
Next
Range("A1").Resize(UBound(w, 1), UBound(w, 2)).Value = w
MsgBox "処理が完了しました"
End Sub
|
|