Drorには、かなりの量のデータを含むワークシートがあります。ある列のデータが別の列のデータとまったく同じになる可能性があるため、ワークシート内の重複する列を簡単に削除する方法があるかどうか疑問に思います。

もちろん、最初のステップは、2つの列が同一であるかどうかを判断することです。これは、次のような配列数式を使用してかなり簡単に決定できます。

=AND(A1:A100=B1:B100)

(配列数式はShift + Ctrl + Enterを使用して入力することに注意してください。)

数式は、列AとBの最初の100行のすべての値を比較します。それらがすべて同じである場合、数式はTRUEを返します。いずれかのセルが一致しない場合、数式はFALSEを返します。結果がTRUEの場合、列が同じであるため、列の1つを削除できます。

もう少し自動化されたもの、つまり重複する列が削除されるものが必要な場合は、マクロを使用する必要があります。次の手順では、ワークシートのすべての列を調べ、右端の列から始めて、すべての列を比較します。ワークシート内の順序に関係なく、同じものがある場合、マクロは重複する列を削除するかどうかを尋ねます。

Sub DeleteDuplicateColumns()

Dim rngData As Range     Dim arr1, arr2     Dim i As Integer, j As Integer, n As Integer

On Error Resume Next     Set rngData = ActiveSheet.UsedRange     If rngData Is Nothing Then Exit Sub

n = rngData.Columns.Count

For i = n To 2 Step -1         For j = i - 1 To 1 Step -1             If WorksheetFunction.CountA(rngData.Columns(i)) <> 0 And _               WorksheetFunction.CountA(rngData.Columns(j)) <> 0 Then                 arr1 = rngData.Columns(i)

arr2 = rngData.Columns(j)

If AreEqualArr(arr1, arr2) Then                     With rngData.Columns(j)

'mark column to be deleted                         .Copy                         If MsgBox("Delete marked column?", vbYesNo) _                           = vbYes Then                             rngData.Columns(j).Delete                         Else                             'remove mark                             Application.CutCopyMode = False                         End If                     End With                 End If             End If         Next j     Next i

End Sub
Function AreEqualArr(arr1, arr2) As Boolean     Dim i As Long, n As Long     AreEqualArr = False     For n = LBound(arr1) To UBound(arr1)

If arr1(n, 1) <> arr2(n, 1) Then             Exit Function         End If     Next n     AreEqualArr = True End Function

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(7164)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。