Avatar billede gombi Nybegynder
23. maj 2012 - 21:57 Der er 8 kommentarer

Find ord i kolonne

En kolonne har 5000 rækker.
I hver celle er der et ukendt antal ord (med mellemrum imellem)
De enkelte ord går igen i flere af cellerne.

Opgaven går ud på at finde de forskellige ord og overføre dem enkeltvis til hver sin celle i et andet ark. "ord1" som jo går igen flere gange i den oprindelige liste, må kun være 1 sted i den nye liste.

En kode til at udføre dette i excel?
Avatar billede finb Ekspert
24. maj 2012 - 22:46 #1
Prøv at "importere" filen, hvor separator = MELLEMRUM.
Læg alle de fremkomne kolonner sammen i een høj kolonne,
marker denne kolonne.
ctrl + c
klik i en ny, tom kolonne
indsæt speciel
indsæt "unikke værdier"
finb
Avatar billede gombi Nybegynder
25. maj 2012 - 19:59 #2
Det virker selvom der skal gøres en del manuelt arbejde. Jeg havde håbet på noget kode og så et enkelt tryk på en knap.
Avatar billede gombi Nybegynder
25. maj 2012 - 20:01 #3
Hov, jeg skal jo ikke give mig selv point!
Skriv lige et svar igen finb
Avatar billede store-morten Ekspert
27. maj 2012 - 19:10 #4
Prøv at flytte din kolonne til et tomt ark i kolonne A

Kør denne makro:
Sub MedInfo()
Range("C1").Select
    MsgBox "Først opdeles ord"
Columns("A:A").TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False
       
SidsteKolonne = Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
SidsteKolonneBogstav = Left(Cells(1, SidsteKolonne).Address(1, 0), _
InStr(1, Cells(1, SidsteKolonne).Address(1, 0), "$") - 1)
    MsgBox "Sidste brugte kolonne er lokaliseret til: " & SidsteKolonne & vbCrLf & _
    "Tallet skiftes ud med bogstavet: " & SidsteKolonneBogstav
   
Range("C1").Select
For i = 3 To SidsteKolonne
KolonneBogstav = Left(Cells(1, i).Address(1, 0), _
InStr(1, Cells(1, i).Address(1, 0), "$") - 1)
    MsgBox "Duplikater fjernes i kolonne: " & KolonneBogstav
slut = Range(KolonneBogstav & "65536").End(xlUp).Address
Range(KolonneBogstav & "1:" & slut).RemoveDuplicates Columns:=1, Header:=xlNo
Range(KolonneBogstav & "1").Offset(0, 1).Select
  Next i
 
Range("D1").Select
For i = 4 To SidsteKolonne
KolonneBogstav = Left(Cells(1, i).Address(1, 0), _
InStr(1, Cells(1, i).Address(1, 0), "$") - 1)
    MsgBox "Nu flyttes kolonne: " & KolonneBogstav & " til en, i kolonne C"
slut = Range(KolonneBogstav & "65536").End(xlUp).Address
Range(KolonneBogstav & "1:" & slut).Cut
Range("C65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Range(KolonneBogstav & "1").Offset(0, 1).Select
  Next i
 
Range("C1").Select
    MsgBox "Tomme celler fjernes i kolonne: C"
Range("C1" & ":" & Range("C65536").End(xlUp).Address).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    MsgBox "Duplikater fjernes i kolonne: C"
Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
Range("A1").Select
End Sub

Hvis det virke, så brug denne:
Sub UdenInfo()
Application.ScreenUpdating = False
Columns("A:A").TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False
       
SidsteKolonne = Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
SidsteKolonneBogstav = Left(Cells(1, SidsteKolonne).Address(1, 0), _
InStr(1, Cells(1, SidsteKolonne).Address(1, 0), "$") - 1)
   
For i = 3 To SidsteKolonne
KolonneBogstav = Left(Cells(1, i).Address(1, 0), _
InStr(1, Cells(1, i).Address(1, 0), "$") - 1)
slut = Range(KolonneBogstav & "65536").End(xlUp).Address
Range(KolonneBogstav & "1:" & slut).RemoveDuplicates Columns:=1, Header:=xlNo
Range(KolonneBogstav & "1").Offset(0, 1).Select
  Next i

For i = 4 To SidsteKolonne
KolonneBogstav = Left(Cells(1, i).Address(1, 0), _
InStr(1, Cells(1, i).Address(1, 0), "$") - 1)
slut = Range(KolonneBogstav & "65536").End(xlUp).Address
Range(KolonneBogstav & "1:" & slut).Cut
Range("C65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
  Next i
 
Range("C1" & ":" & Range("C65536").End(xlUp).Address).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
Range("C1").Select
Application.ScreenUpdating = True
End Sub
Avatar billede gombi Nybegynder
04. november 2012 - 13:47 #5
Hej finb
Vil gerne give dig point. Men jeg tror lige du skal skrive det som et svar?
Avatar billede store-morten Ekspert
04. november 2012 - 15:01 #6
Kommentar til #4 ?
Avatar billede gombi Nybegynder
05. november 2012 - 10:46 #7
Hej store-morten.
Har ikke fået afprøvet din kode, da jeg klarede mig med finb's manuelle metode. Din kode er sikkert OK. Hvis du giver et svar sender jeg gerne point til dig, da finb ikke har svaret endnu. Jeg vil dog lige give ham et par dage... Er det evt. muligt at dele point ud til flere?
Avatar billede store-morten Ekspert
05. november 2012 - 22:04 #8
Ok, du venter bare på 'Svar' fra finb
sætter flueben ved begge 'Svar' inden du acceptere.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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