Avatar billede hoell Nybegynder
03. april 2006 - 07:58 Der er 10 kommentarer og
1 løsning

Additem unik værdi ud fra kolonne med gentagelser

Hej Jeg søger en smart måde at finde unikke værdier i en kolonne på. Jeg skal bruge dem til at oprette en dynamisk combobox.

For i = 4 To 1200
    ComboBox1.AddItem Worksheets("Hoved ark").Range("D" & i & "").Value
Next i

Laver en combox med 1200 inputs. Der er kun omkring ca 10 unikke, hvordan får jeg dem sorteret fra "smart"?
Avatar billede excelent Ekspert
03. april 2006 - 16:10 #1
Avatar billede hoell Nybegynder
03. april 2006 - 16:53 #2
Ja det er jeg med på, hvordan får jeg så datene tilbage på plads igen, da denne makro sletter de felter der ikke er unikke. Jeg har et skema med ca 1200 rækker og 100 + kolonner, som jeg ikke vil pille i. Altså sortering er okay. Men kan det ikke lade sig gøre at klare det med en array eller ligende, jeg synes jeg har set en løsning et sted, men kan ikke huske hvor.
Avatar billede kabbak Professor
03. april 2006 - 17:03 #3
For i = 4 To 1200
if Worksheets("Hoved ark").Range("D" & i )<> Worksheets("Hoved ark").Range("D" & i +1) then
    ComboBox1.AddItem Worksheets("Hoved ark").Range("D" & i ).Value
end if
Next i
Avatar billede kabbak Professor
03. april 2006 - 17:04 #4
Nb : dataerne SKAL være sorteret
Avatar billede excelent Ekspert
03. april 2006 - 19:16 #5
Sub uniks()

Dim i, j
Dim unikke(1210)

Worksheets("Hoved ark").Activate

For i = 1 To 1200
  unikke(i) = Cells(i + 3, 4)
Next

For i = 1 To 1200
  For j = i + 1 To 1200
    If unikke(j) = unikke(i) Then unikke(j) = ""
  Next
Next

For i = 1 To 1200
  If unikke(i) <> "" Then ComboBox1.AddItem unikke(i)
Next

Range("D3").Select
End Sub
Avatar billede bak Forsker
03. april 2006 - 20:01 #6
Dim uniq As New Collection
  Dim c As Range
  ComboBox1.Clear
  On Error Resume Next
  For Each c In Range("A1:A1200")
      uniq.Add CStr(c), CStr(c)
      If Err.Number = 0 Then ComboBox1.AddItem c
      Err.Clear
  Next
Avatar billede excelent Ekspert
03. april 2006 - 20:06 #7
lol bak, håber den virker- min putter har haft 2 nervøse nedbrud,
bare fordi den ikke kan håndtere en uendelig løkke :-)
Avatar billede excelent Ekspert
03. april 2006 - 21:24 #8
Sub uniks()
Dim i, j, t
Dim unikke(1210)
Dim unikke2(1210)
t = 1
Worksheets("Hoved ark").Activate
For i = 1 To 1200
  unikke(i) = Cells(i + 3, 4)
Next
For i = 1 To 1200
  For j = i + 1 To 1200
    If unikke(j) = unikke(i) Then unikke(j) = ""
  Next
Next
For i = 1 To 1200
If unikke(i) = "" Then GoTo om
unikke2(t) = unikke(i): t = t + 1
om:
Next
For i = 1 To t
  ComboBox1.AddItem unikke(i)
Next
Range("D3").Select
End Sub
Avatar billede excelent Ekspert
04. april 2006 - 05:47 #9
ComboBox1.AddItem unikke(i)
skiftes ud med :
ComboBox1.AddItem unikke2(i)
Avatar billede hoell Nybegynder
04. april 2006 - 07:32 #10
Så der point exelent, smed lige en IF-sætning, der sorterer de blanke felter fra også.

Tak for hjælpen.

    Dim i, j, t
    Dim unikke(1210)
    Dim unikke2(1210)
    t = 1
    Worksheets("Hoved ark").Activate
    For i = 1 To 1200
      unikke(i) = Cells(i + 3, 12)
    Next
    For i = 1 To 1200
      For j = i + 1 To 1200
        If unikke(j) = unikke(i) Then unikke(j) = ""
      Next
    Next
    For i = 1 To 1200
    If unikke(i) = "" Then GoTo om
    unikke2(t) = unikke(i): t = t + 1
om:
    Next
    For i = 1 To t
        If unikke2(i) <> "" Then
            ComboBox2.AddItem unikke2(i)
        End If
    Next
    Range("L3").Select
Avatar billede excelent Ekspert
04. april 2006 - 08:17 #11
ok velbekom :-)
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