Vraag : Vbavraag van XLS 2003 - schrap dubbele rijen

Hallo - blink binnen 2003 uit ik aan opstelling sub probeer die het schrappen van dubbele rijen zal verwezenlijken.

I vond een manuscript van steekproefvba dat me begonnen kreeg - het is nuttig om dubbele rijen te schrappen binnen uitblinkt maar volledig verwezenlijkt wat niet ik aan do.

In zijn huidige vorm (met sommige wijzigingen van me) ik heb het die meestal maar deze punten moet richten werken:

1. Ik wil een instrtest kunnen doen de kolom identificeren die ik heb willen om voor de dubbele controle gebruiken - op dit ogenblik heeft het met me gedaan die de waaier plaatsen om „A1“ te zeggen zoals hieronder getoond, zodat de kolom A wordt gebruikt -- maar de kolom kan variëren - het is best als ik een koordtest op kan doen row1 (die de kopbalnamen daarin heeft, zegt het zoeken „*SKU*“ (vervangingen) in A1: AA1 - vind de cel dat en gebruik dat de cel om de kolom te plaatsen… b.v. B1, enz. zou kunnen zijn - maar ik ben niet zeker hoe te om de code te schrijven om that.

2 te verwezenlijken. Als er zijn wat lege rijen schijnen te zijn maar zijn niet zij werkelijk… b.v. zeggen rij 1-10 zichtbare gegevens heeft, maar typte iemand iets in rijen 11, schrapten 12, dan het, neemt de code rijen op 11 en 12 aangezien vereisend verwerking - dat misschien daar wordt een lentest gedaan op concantonation van zegt de eerste 3 kolommen van elke rij (b.v. len (a1+b2+c1) >0) om of vergt de rij verwerking te zien? de kwestie is de behoefte van I een nauwkeurige telling op hoeveel duplicaten omdat de recentere processen zich op dit baseren om welke weg te bepalen om (b.v. als >100 gevonden de duplicaten dit doen, anders dit)

3 te nemen. Ik wil de resultaten/detail kunnen zien van wat - ik heb de manuscriptopstelling om # van rijen te tonen het schrapte - ziet bodem „result_sheet werd geschrapt. Waaier („number_rows_deleted“). Value = CStr (N)“ - maar van het detail zou houden - toont de rij zelf - neer als opeenvolgend schrijf de rijen… zien „dupkillerresult het“ lusje in xls indient - rijen 11/12 - als het het rijaantal kon schrijven, naam van labels voorzien, dan rijdetail….

PS - ik ben fijn met het feit dat wanneer een duplicaat wordt gevonden, de eerste instantie/de rij preserved.

thanks vooraf voor om het even welke hulp zijn! van
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
Public SubDeleteDuplicateRows_usa
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'DeleteDuplicateRows
'Dit zal dubbele die verslagen schrappen, op de Actieve Kolom worden gebaseerd. Namelijk
'als de zelfde waarde meer dan eens in de Actieve Kolom wordt gevonden, alles behalve
'de eerste (laagste rijaantal) zal worden geschrapt.
'
'Om de macro in werking te stellen, selecteer de volledige kolom u om wenst af te tasten voor
'duplicaten, en in werking gesteld deze procedure.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Schemerig R zoals lang
Schemerig N zoals lang
Schemerig V als Variant
Schemerige Rng als Waaier
Schemerige xlSheet_dupkillerresult als Excel.Worksheet
Schemerige my_active_source als Excel.Worksheet

Reeks my_active_source = Aantekenvellen („usa_data“)
    my_active_source. Activeer
    my_active_source. Waaier („A1“). Selecteer
Plaats my_active_source = niets

Op Fout GoTo EndMacro
Application.ScreenUpdating = Vals
Application.Calculation = xlCalculationManual


Vastgestelde Rng = Application.Intersect (ActiveSheet.UsedRange, _
                    ActiveSheet.Columns (ActiveCell.Column))

Application.StatusBar = de „Rij van de Verwerking: “ & Formaat (Rng.Row, „#, ##0“)

N = 0
Voor R = Rng.Rows.Count aan 2 Stap -1
Als Mod. 500 van R = 0 toen
    Application.StatusBar = de „Rij van de Verwerking: “ & Formaat (R, „#, ##0“)
Eind als

V = Rng.Cells (R, 1). Waarde
Als V = dan vbNullString
    Als Application.WorksheetFunction.CountIf (Rng.Columns (1), vbNullString) > 1 toen
        Rng.Rows (R) .EntireRow.Delete
        N = N + 1
    Eind als
Anders
    Als Application.WorksheetFunction.CountIf (Rng.Columns (1), V) > 1 toen
        Rng.Rows (R) .EntireRow.Delete
        N = N + 1
    Eind als
Eind als
Volgende R

EndMacro:

Application.StatusBar = Vals
Application.ScreenUpdating = Waar
Application.Calculation = xlCalculationAutomatic
Reeks xlSheet_dupkillerresult = Aantekenvellen („dupkillerresult“)
xlSheet_dupkillerresult.Activate
xlSheet_dupkillerresult.Range („usa_count“). Waarde = CStr (N)
Reeks xlSheet_dupkillerresult = niets
Dubbele Geschrapte Rijen 'MsgBox „: “ & CStr (N)

Sub van het eind

Antwoord : Vbavraag van XLS 2003 - schrap dubbele rijen

Andere oplossingen  
 
programming4us programming4us