重複する行を含むExcelシートがあります
A C D E F列が同じである行を削除したい(重複を計算している間はBを無視するが、行を削除している間は削除する)
現時点では、比較と削除の間、Bは無視されます。
Excel 2013で
できた
行1と2を前提として、私が正しく理解している場合、A1 = A2、C1 = C2、D1 = D2、E1 = E2およびF1 = F2の場合にのみ、行2を削除します。
これが私が思いついたものです。おそらくもっと短いかもしれませんが、それはトリックを行います:
Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
current = ActiveCell.Address
ActiveCell.Offset(1, 0).Activate
Do While ActiveCell.Value <> ""
If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
ActiveSheet.Rows(ActiveCell.Row).Delete
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop
ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub
これは、評価されている行へのポインタとしてActiveCellを使用して残りのすべての行をループし、「元の」行のセルをcurrent変数に格納します。ループが終了すると、currentの下のセルがアクティブになり、内部の評価ループが再び開始されます。
私がどこかで失敗した場合は、遠慮なく教えてください:)
この式を各行に追加します。 G列:
=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")
これにより、次のような結果が得られます。
A B C D D F G
- - - - - - -
x o x x x x DELETE ME
x x x x x o
x x x x x x DELETE ME
x o o x x x
次に、「DELETE ME」という行の列Gにフィルターを作成し、それらを削除します。
@ Garrulinae
私はあなたのアイデアをインスピレーションとして使用しました。行がたくさんあり、列の重複する値を含む行を削除したかったのです。その列の重複を削除を使用すると、行全体ではなく、列からデータのみが削除されます。テーブル全体から2行目と3行目をすべて削除する必要がありました。だから、私は新しい列を作り、最初の行の値を空のままにして、2番目と3番目の行の私を削除しました。次に、その特定の列の最初の3行(行全体ではなく)のみの値をコピーし、テーブルの列全体に貼り付けました。現在、列全体の2行目と3行目ごとに「私を削除」していました。次に、その列の値を並べ替えて、delete meを含むすべての行を削除する必要があります。 2番目、3番目、4番目、または2番目、3番目、4番目、5番目などを削除する場合は、同じソリューションを使用できます。
それが誰かを助けることを願っています...