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.