Avatar billede emil_ger Nybegynder
11. maj 2008 - 21:19 Der er 11 kommentarer og
1 løsning

Fjern dubletter i kolonne og sammel unikke forekomster i en strin

Jeg har et ark, hvor jeg i kolonne C2:C36536 har x antal forekomster (tallet er meget varierende), hvor de fleste er dubletter.

Kolonnen kunne se ud sådan her:

Lars Pedersen
Henrik Madsen
Henrik Madsen
Henrik Madsen
Birthe Thomsen
Lars Pedersen
Lars Pedersen
Henrik Madsen

Her vil jeg gerne have et script, som samler en string som ser sådan ud:

"Lars Pedersen, Henrik Madsen, Birthe Thomsen"

Arket hedder "Registreringer", hvis det behøves :)

På forhånd tak for hjælpen :D
Avatar billede excelent Ekspert
11. maj 2008 - 21:49 #1
rækker hvor dubletter er slettes !!!
og streng med navne indsættes i D2
Der er grænser for hvor mange navne der kan vises i 1 celle

Sub SletDubletter() ' Slet i markeret kolonne
c = 3
r = Cells(65500, c).End(xlUp).Row
Range(Cells(2, c), Cells(65500, c).End(xlUp)).Select
For t = 1 To r
If Cells(t, c) <> "" Then
For t2 = t + 1 To r
If Cells(t, c) = Cells(t2, c) Then
Cells(t2, c) = ""
End If
Next
End If
Next

Selection.Columns.SpecialCells(xlCellTypeBlanks).Rows.Delete Shift:=xlUp

r = Cells(65500, c).End(xlUp).Row
For t = 2 To r
x = x & Cells(t, 3) & ", "
Next

Range("D2") = x
ActiveCell.Select
End Sub
Avatar billede emil_ger Nybegynder
11. maj 2008 - 21:50 #2
Må hellere lige udtrykke mig lidt nærmere om ønsket.

1) Sorter listen (evt. alfabetisk)
2) Fjern dubletter
3) De unikke forekomster skal samles i en string.
Avatar billede emil_ger Nybegynder
11. maj 2008 - 21:50 #3
Sorry, du svarede mens jeg skrev, så min kommentar er ikke en respons på dit indlæg :)
Avatar billede excelent Ekspert
11. maj 2008 - 21:57 #4
indsæt denne som 8 sidste linie:

Selection.Sort Key1:=Range(ActiveCell.Address), Order1:=xlAscending
Avatar billede emil_ger Nybegynder
11. maj 2008 - 22:02 #5
Ser ud til at fungere fremragende, men fandt ud af, at det faktisk var kolonne D og ikke C.

Mit script ser sådan ud nu:
--------------------------------------------------
Sub SletDubletter() ' Slet i markeret kolonne
Sheets("Handelsoversigt").Select
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Select
c = 3
r = Cells(65500, d).End(xlUp).Row
Range(Cells(2, d), Cells(65500, d).End(xlUp)).Select
For t = 1 To r
If Cells(t, d) <> "" Then
For t2 = t + 1 To r
If Cells(t, d) = Cells(t2, d) Then
Cells(t2, d) = ""
End If
Next
End If
Next

Selection.Sort Key1:=Range(ActiveCell.Address), Order1:=xlAscending

r = Cells(65500, d).End(xlUp).Row
For t = 2 To r
x = x & Cells(t, 3) & ", "
Next

Range("L1") = x
ActiveCell.Select
Sheets("Kunder").Select
End Sub
--------------------------------------------------
Jeg kan ikke gennemskue om c = 3 skal ændres til d = 3

Ved du hvad begrænsningen er for én celle (altså hvor mange karakterer kan den rumme?)
Avatar billede excelent Ekspert
11. maj 2008 - 22:05 #6
variablen c får værdien 3 ( = kolonne C ) kan blot ændres til 4 = D

mener det er 1000 tegn en celle kan vise
Avatar billede emil_ger Nybegynder
11. maj 2008 - 22:05 #7
Den skulle ændres :D Må være træt, først i bakspejlet jeg overvejede bare at prøve hehe.

Smid et svar ... tak for hjælpen - igen :D
Avatar billede excelent Ekspert
11. maj 2008 - 22:06 #8
velbekom :-)
Avatar billede emil_ger Nybegynder
11. maj 2008 - 22:08 #9
Får en fejl nu. Kan jeg få dig til lige at se scriptet igennem en sidste gang?
Fejlen fås på linie 6 (r = Cells(65500, d).End(xlUp).Row)

Sub SletDubletter() ' Slet i markeret kolonne
Sheets("Handelsoversigt").Select
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Select
d = 4
r = Cells(65500, d).End(xlUp).Row
Range(Cells(2, d), Cells(65500, d).End(xlUp)).Select
For t = 1 To r
If Cells(t, d) <> "" Then
For t2 = t + 1 To r
If Cells(t, d) = Cells(t2, d) Then
Cells(t2, d) = ""
End If
Next
End If
Next

Selection.Sort Key1:=Range(ActiveCell.Address), Order1:=xlAscending

r = Cells(65500, d).End(xlUp).Row
For t = 2 To r
x = x & Cells(t, 3) & ", "
Next

Range("L1") = x
ActiveCell.Select
Sheets("Kunder").Select
End Sub
Avatar billede emil_ger Nybegynder
11. maj 2008 - 22:11 #10
Faktisk er fejlen en anden ser jeg nu. Den holder sig stadig i C.
Avatar billede excelent Ekspert
11. maj 2008 - 22:12 #11
prøv denne

Sub SletDubletter() ' Slet i markeret kolonne
Sheets("Handelsoversigt").Select
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Select
d = 4
r = Cells(65500, d).End(xlUp).Row
Range(Cells(2, d), Cells(65500, d).End(xlUp)).Select
For t = 1 To r
If Cells(t, d) <> "" Then
For t2 = t + 1 To r
If Cells(t, d) = Cells(t2, d) Then
Cells(t2, d) = ""
End If
Next
End If
Next

Selection.Sort Key1:=Range(ActiveCell.Address), Order1:=xlAscending

r = Cells(65500, d).End(xlUp).Row
For t = 2 To r
x = x & Cells(t, 4) & ", "
Next

Range("L1") = x
ActiveCell.Select
Sheets("Kunder").Select
End Sub
Avatar billede emil_ger Nybegynder
11. maj 2008 - 22:35 #12
Så var den der ... Igen, tusind tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester