一部の列に基づいて重複行を削除する方法


11

重複した行を含むExcelシートがあります

ACDEF列が同じ場合に行を削除したい(重複の計算中はBを無視するが、行の削除中は削除する)

現時点では、比較だけでなく削除中もBを無視します。


前と後のスクリーンショットを追加できますか?私はあなたが必要とするものを想像するのに苦労しています(ごめん)
デイブ

A、C、D、E、F列に重複する値があると、行全体が削除され、重複の最初のインスタンスが保持されますか?A1がA2に一致し、C2がC3に一致する場合、行2は削除されますか?
レイスタファリアン14年

回答:


18

Excel 2013

  1. すべてのデータを選択
  2. [データ]タブを選択->重複を削除
  3. データに列ヘッダーがある場合は、「私の列にヘッダーがある」をチェックします。
  4. 比較に使用したくないすべての列のチェックを外します
  5. OKを押す

完了


いいえ、これは他の行に似ている行を探します。私もこれを考えましたが、それは別の質問への解決策です:)
Garrulinae

@Garrulinaeあなたは何を言っているのですか、これがどのように機能しないのか説明できますか?OPの質問に対する正解のようです。
TheCrazyProgrammer

@TheCrazyProgrammer-2年以上後にこれを見ると、OPの質問「ACDEF列が同じ場合に行を削除したい」が2つの異なる方法で解釈できることがわかります。これらの列がこの行内で互いに同じであるならば、私はそれを意味した。この回答は、この行の列の値が別の行と同じかどうかを意味すると想定しています。後から考えると、この仮定は正しいと思われます。特に、正しい答えとしてマークされているためです。
-Garrulinae

@Garrulinae Gotcha。今、あなたの答えを見て理解しました。余談ですが、OP(および私)が必要とする機能はExcelの簡単なボタンとして存在することに驚いていますが、グーグルでは複雑なことをしている記事がたくさんあるので、しばらくするとこの答えを疑いました。
-TheCrazyProgrammer

@TheCrazyProgrammer、私もサイドノートを持っています-この答えを投稿したのはOPだと気付いただけです!それは明らかに正しい答えですが、質問がより明確ではなかったのは残念です。
-Garrulinae

1

行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を使用して、残りのすべての行をループし、現在の変数に「元の」行のセルを格納します。ループが終了すると、電流より下のセルがアクティブになり、内部評価ループが再び開始されます。

私がどこかで台無しにした場合、私に言うことをheしないでください:)


1

たとえば、この式を各行に追加します。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   

次に、「Gを削除」と言う行の列Gにフィルターを作成し、それらを削除します。


0

@ガルリナエ

あなたのアイデアをインスピレーションとして使用しました。多くの行があり、列の重複値を含む行を削除したかった。その列で重複の削除を使用すると、行全体ではなくその列からデータのみが削除されます。そのテーブル全体から2行目と3行目ごとに削除したかったのです。だから、私は新しい列を作成し、最初の行の値を空のままにして、2番目と3番目の行で私を削除しました。そして、その特定の列の最初の3行のみ(行全体ではなく)の値をコピーし、テーブルの列全体に貼り付けました。これで、列全体の2行目と3行目ごとに「削除」されました。次に、その列の値を並べ替え、delete meを含むすべての行を削除するだけです。2番目、3番目、4番目、または2番目、3番目、4番目、5番目などごとに削除する場合は、同じソリューションを使用できます。

それが誰かを助けることを願っています...


2
私はあなたが言っていることを完全に理解していません。あなたが何をしたかを説明する代わりに、使用した式を示し、いくつかのサンプルデータを提示し、そのデータであなたの答えがどのように機能するかを示してください。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.