システムwiki

Office:コードを変更して、それぞれのワークシートの最後の行に重複、切り取り、コピーを識別します

PaupauD 受付中 最終更新日:2020-08-19 19:15

以下のコードを使用して、E列に基づく重複行とcolumn(O)の一意の値を強調表示します

次に、アクティブなワークシートが何であれ、下の強調表示された行をすべて切り取って貼り付けます.

しかし、私が達成したかったのは、列AからUまでの重複のみを強調表示して、それぞれのワークシートの最後の行に移動することです.

たとえば、ワークシート「TOYOTA」で重複が見つかった場合、「TOYOTA」の最後の行に移動します

空白行が表示されないように、すべての行を上にシフトします.

明示的なオプション

Sub FindDuplicate()
Application.ScreenUpdating=False
Dim Item
For Each Item In Array( "AWEER"、 "JEBEL ALI"、 "MAN"、 "MAN 2020"、 "OPTARE" 、「SOLARIS」、「TOYOTA」、「VDL」、「VOLVO」、「VOLVO 2019」)
Sort_Prim Worksheets(Item)
Next
End Sub

Sub Sort_Prim(ByVal Ws As Worksheet)
Application.ScreenUpdating=False
Dim cell1 As Variant、Body As Range、Source As Range

Set Body=Ws.Range( "E2"、Ws.Range( "E"&Rows.Count).End(xlUp))
Set Source=Ws.Range( "O2"、Ws.Range( "O"&Rows.Count).End(xlUp))
Source.Interior.Color=xlNone
Body 1の各cell1の場合
If Application.WorksheetFunction.CountIf(Body、cell1)>1 And cell1 .EntireRow.Columns( "O").Value& ""="AM" Then
cell1.EntireRow.Interior.Color=xlColorIndexNone
ElseIf Application.WorksheetFunction.CountIf(Body、cell1)>1そしてcell1.EntireRow.Columns( "O").Value& ""="SP" Then
cell1.EntireRow.Interior.Color=RGB(255、0、0)
cell1.EntireRow.Cut Range( "A" &Rows.Count).End(xlUp).Offset(1、0)

ElseIf Application.WorksheetFunction.CountIf(Body、cell1)>1 And cell1.EntireRow.Columns( "O").Value& ""="BM" Then
cell1.EntireRow.Interior.Color=RGB( 204、204、255)
ElseIf Application.WorksheetFunction.CountIf(Body、cell1)>1 And cell1.EntireRow.Columns( "O").Value& ""="CM" Then
cell1.EntireRow.Interior.Color=RGB(153、204、255)
End If
Next

End Sub

返信リスト(回答:5)

1 #
Jeovany

こんにちは

あなたのシナリオとコードについての私の理解に従って私のアプローチ、

アレイ( "aweer"、 "Jebel Ali"、 "Man"、 "Man 2020"、 "Optare"、 "Solaris"、 "Toyota "、" VDL "、" Volvo "、" Volvo 2019 ")

1-基準配列「AM、BM、CM、およびSP」

に一致する重複項目を数えるためのヘルパー列を挿入します.

式= xuctifs($ E $ 2:$ $ 20、$ 2,2,2,2,2:$ O $ 20、o2)とそれをドラッグします.

シナリオに従って範囲を調整します.

2-条件付きフォーマットを使用して、基準値

に従って列AからUへのセルを強調表示する

:

のためのCF式

"sp"=と($ v2>1、$ o2= "sp")==>>色REDRGB(255,0,0)

「SP」=および($ v2>1、$ O2= "CM")==>>カラーBluergb(153,204,255)

「BM」=および($ v2>1、$ O2= "BM")==>>カラーブルーRGB(204,204,255)

3-tableをソートする

「DUPの数」列ごとの値ごとに値ごとの

レベル

を追加することによって

「基準」列aからzへの値による

ソートプロセスのマクロを録音して、現在のコードのループに挿入できます.

結果

注:

私は写真内のtableと代表の列に合うようにいくつかの列を隠します.

私のアプローチが役立っていない場合は、

ブックへのリンクを投稿するように要求して、アクセスできるようにして、問題を解決するために働きます.

2 #
Jeovany

このマクロを試すことができます

Sub FindandSortDuplicate()

ワークシートを暗くする

バリアントとして薄暗いアイテム

Dim CountRng、SourceRng、TableRng As Range

'' 'あなたのシート配列

Items=Array( "AWEER"、 "JEBEL ALI"、 "MAN"、 "MAN 2020"、 "OPTARE"、 "SOLARIS"、 "TOYOTA"、 "VDL"、 "VOLVO"、 "VOLVO 2019")

'' 'イベントをオフにします

Application.ScreenUpdating=False

シート(アイテム)の各Wについて

Sheets(Ws.Name).Activate

'' 'カウント重複範囲を設定します

Set CountRng=Ws.Range(Cells(2、 "V")、Cells(Rows.Count、 "V").End(xlUp))

'' '基準(ソース)範囲を設定します

Set SourceRng=Ws.Range(Cells(2、 "O")、Cells(Rows.Count、 "O").End(xlUp))

'' 'table全体を設定します

Set TableRng=Ws.Range(Cells(1、 "A")、Cells(Rows.Count、 "V").End(xlUp))

'' '' 2レベルのソート

Ws.Range( "V2").選択

ActiveWorkbook.Worksheets(Ws.Name).Sort.SortFields.Clear

ActiveWorkbook.Worksheets(Ws.Name).Sort.SortFields.Add Key:= CountRng _

、SortOn:= xlSortOnValues、Order:= xlAscending、DataOption:= xlSortNormal

ActiveWorkbook.Worksheets(Ws.Name).Sort.SortFields.Add Key:= SourceRng _

、SortOn:= xlSortOnValues、Order:= xlAscending、DataOption:= xlSortNormal

ActiveWorkbook.Worksheets(Ws.Name).Sortを使用

.SetRange TableRng

.Header=xlYes

.MatchCase=False

.Orientation=xlTopToBottom

.SortMethod=xlPinYin

.適用

次で終わる

次のWs

'' 'イベントを元に戻す

Application.ScreenUpdating=True

MsgBox "すべて完了"

End Sub

応答2# ->にスキップ
3 #
PaupauD

ユーザーが数式を誤って削除する傾向があるため、数式を使用できないので、お世話になりました.

並べ替え手法が機能している間は、このEAの前に別のEAを実行して、並べ替えを行うことはできません

異なるパラメータセットに基づく.

ありがとうございます.

4 #
Herbert

PowerPivotおよびPower Query(別名Get&Transform)を備えたExcel 365 Pro Plus

5つの列カテゴリを持つtableの重複レコードを見つける

tableの下部に重複するレコードを配置します.

保持されるオリジナルのソート順とサイズ.

数式なし、VBAマクロなし.

https://www.mediafire.com/file/52qp33jkomqr1nj/03_22_20.xlsx/file

https://www.mediafire.com/file/a76uqxov0nbhvw4/03_22_20.pdf/file

応答4# ->にスキップ
5 #
PaupauD

特定の形式を持つ他のマクロがExcelファイルで実行されています.ピボットtableは役に立たなくなります.

これらの形式は変更してはなりません.そのため、私も苦労しています.ありがとうございます.