Kære gæst, velkommen til Tweak.dk. Hvis dette er dit første besøg her, bør du læse Hjælp. Her forklares i detaljer hvordan denne side fungerer. For at benytte alle funktionerne på denne side, bør du overveje at lade dig registrere. Benyt venligst registreringsformularen for at registrere her eller læs yderligere information om registreringsprocessen. Hvis du allerede er registreret, så log på her.

1

tirsdag, 12. april 2011, 12:32


Hey, har siddet og bøvlet lidt med noget VBA programmering, men er rendt ind i et problem.

Jeg har sorteret indholdet i et worksheet i alfabetisk orden, med hensyn til kolonne "O", og vil så gerne tjekke efter dupletter i cellerne i kolonne "O".


Koden der skal tjekke om cellerne i kolonne "O" (kolonne nr. 15) er dupletter:

Kildekode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim lrow As Integer, i As Integer, Data1 As Range, Data2 As String, Data4 As String, Data5 As String

Set Data1 = Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown))
lrow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To lrow 
    Data2 = Data1.Cells(i, 15).Value 
    Data4 = Data1.Cells(i + 1, 15).Value
 
    If Data2 <> Data4 Then
        Data5 = Data1.Cells(i + 2, 15).Value

        If Data4 <> Data5 Then 
            Selection.Rows(i + 1).EntireRow.Delete 
        End If 

     End If 

Next i


Ideen er at jeg tjekker om
- cellen (i,15) er forskellig fra cellen (i+1,15)
- og hvis det så er tilfældet så tjekker jeg om cellen (i+1,15) også er forskellig fra cellen (i+2,15)
- og hvis det så igen er tilfældet konkluderer jeg at cellen (i+1,15) må have unikt indhold, hvorefter jeg så sletter denne række.

Men så vidt jeg kan se når jeg stepper mig igennem denne kode/makro, så er det som om mine

Kildekode

1
If Data2 <> Data4 Then
ikke fungerer...


Nogle der har noget input? Eller evt en anden måde at tjekke efter dupletter?

Dette indlæg er blevet redigeret 2 gange, senest redigeret af "Try-this" (13.04.2011, 12:45)


2

onsdag, 13. april 2011, 12:44


så fik jeg selv løst problemet, der var lidt forskellige ting jeg manglede, som jeg opdagede ved at spytte

data2
data4
data5

ud i en msg box for hver gennemgang.

Den endelige løsning kom til at se således ud:

Kildekode

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
Dim lrow As Integer, i As Integer, Data1 As Range, Data2 As String, Data4 As String, Data5 As String

Set Data1 = Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown))
lrow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To lrow
    
        Data2 = Data1.Cells(i, 15).Value
        Data4 = Data1.Cells(i + 1, 15).Value
            If FoundFirstDuplicate = 0 Then
                If Data2 = Data4 Then
                    FoundFirstDuplicate = 1
                End If
            
                If Data2 <> Data4 Then
                    Selection.Rows(i).EntireRow.Delete
                    i = i - 1
                End If
                
            Else
                If Data2 <> Data4 Then
                    Data5 = Data1.Cells(i + 2, 15).Value
                       If Data4 <> Data5 Then
                           Selection.Rows(i + 1).EntireRow.Delete
                           i = i - 1
                       End If
                End If
            End If
    Next i

Dette indlæg er blevet redigeret 2 gange, senest redigeret af "Try-this" (13.04.2011, 12:46)


Nyeste Videoer og Trailers

Partner sider
Indsend nyhed
Har du fundet en fed nyhed så indsend den så alle andre på Tweak.dk kan få glæde af den.