Avatar billede brianmilan Juniormester
18. december 2007 - 09:13 Der er 11 kommentarer og
1 løsning

Vise een kunde med mange kundenr. i dropdownliste.

Hej,

Jeg har et lille problem, jeg har en Excel fil som jeg importere to kolonner fra:

Kolonne A - Sagsnummer og
Kolonne E - Kundenavn.

Når jeg så får kunderne over i min dropdown-liste i min anden Excel fil så står det pænt, men på mange af kunderne er der flere sagsnumre pr. kunde, så i øjeblikket ser min dropdown-liste sådan ud:
Kolonne A (i nyt ark)| Kolonne B (i nyt ark)
Kunde1              | Sagsnr. Kunde1
Kunde1              | Sagsnr. Kunde1
Kunde2              | Sagsnr. Kunde2
Kunde3              | Sagsnr. Kunde3
Kunde3              | Sagsnr. Kunde3
Knude3              | Sagsnr. Kunde3

Kan man sortere det på en måde, så jeg kun får vist een kunde pr. sagsnummer? F.eks. når jeg vælger dropdown-listen fra kolonne A kunne den vise:
Kunde1
Kunde2
Kunde3

Venlig hilsen Brian
Avatar billede jlemming Nybegynder
18. december 2007 - 09:34 #1
Denne Kode laver en liste hvor navnet kun forkommer engang


Sub navnengang()
 
  Dim Rng1 As Range
  Dim rstart1 As Range

    Set rstart1 = ActiveSheet.Range("A1")
    Set Rng1 = Range(rstart1.Offset(0, 0), Cells(1000, rstart1.Column).End(xlUp))
       
    MarkDuplicates Rng1

End Sub


Private Sub MarkDuplicates(rlist As Range)
Dim Cell As Range
Dim Uniqs As Object 'New Dictionary
Set Uniqs = CreateObject("scripting.dictionary")
  Application.ScreenUpdating = False
  On Error Resume Next
  t = 0
  res = "D"
  For Each Cell In rlist
      Uniqs.Add UCase(Cell.Value), CStr(UCase(Cell.Value))
      If Err.Number = 0 And Cell.Value <> Empty Then
        Cells(t, res) = Cell.Value
        t = t + 1
      End If
      Err.Clear
  Next Cell
 
End Sub
Avatar billede brianmilan Juniormester
18. december 2007 - 10:20 #2
Pyha den driller mig, jeg kan ikke få sat koden ind det rigtige sted, min kode ser sådan ud uden din nye kode:

Private Sub Worksheet_Activate()
    Set was = ActiveSheet
    Set wb = Workbooks.Open("C:\Kunder.xls")
    For i = 1 To 500
        was.Range("R" & i).Value = wb.Sheets(1).Range("E" & i).Value
        was.Range("N" & i).ClearContents
        If IsEmpty(wb.Sheets(1).Range("E" & i)) = False Then
            was.Range("N" & i).Value = wb.Sheets(1).Range("E" & i).Value & "-" & wb.Sheets(1).Range("a" & i).Value
        End If
    Next
    wb.Close
    was.Range("N2:R999").Sort _
    Key1:=was.Range("R2:R999"), _
        Header:=xlGuess

    Worksheets(1).EnableCalculation = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Worksheets(1).EnableCalculation = True Then
        Worksheets(1).EnableCalculation = False
        If ActiveCell.Column = 2 Then
            Set was = ActiveSheet
            was.Range("C" & ActiveCell.Row).ClearContents
            j = 2
            For i = 2 To 500
                ac = ActiveCell.Value
                was.Range("P" & i).ClearContents
                If was.Range("R" & i).Value = ac Then
                    was.Range("P" & j).Value = was.Range("N" & i).Value
                    j = j + 1
                End If
            Next
        End If
        Worksheets(1).EnableCalculation = True
    End If
End Sub
Avatar billede jlemming Nybegynder
18. december 2007 - 10:35 #3
Hvilken kolonne er det du vil have liste, N,R eller P

Kan du evt sende arket?

Jacob,lemming(a)honeywell,com
,=.
(a)= @
Avatar billede brianmilan Juniormester
18. december 2007 - 10:51 #4
Hej Jacob,
De to kolonner som der er i Kunder.xls er A og E som jeg tager med over i Oversigt.xls, det er der hvor jeg har dropdown listerne.

Kolonne R, N og P er i Oversigt.xls :

Kolonne R er den kolonne hvor jeg får alle kundenavnene over i fra Kunder.xls.
Kolonne N inderholder kundenavnene + sagsnumre som jeg fletter sammen.
Kolonne P er der hvor jeg får vist alle sagsnumrene inde for den valgte kunde.
Avatar billede brianmilan Juniormester
18. december 2007 - 10:51 #5
Jeg glemte at skrive at jeg ikke kan sende fra min mail i øjeblikket...
Avatar billede jlemming Nybegynder
18. december 2007 - 11:29 #6
Denne opretter en liste i kolonne O, jeg forventer at der ikke må slettes i din tabel, så du er nød til at oprette en ny.
koden skal kaldes således


call navnengang
Worksheets(1).EnableCalculation = True
end sub



Sub navnengang()
 
Dim Rng1 As Range
Dim rstart1 As Range
Dim Cell As Range
Dim Uniqs As Object 'New Dictionary

Set rstart1 = ActiveSheet.Range("R2")
Set Rng1 = Range(rstart1.Offset(0, 0), Cells(1000, rstart1.Column).End(xlUp))
Set Uniqs = CreateObject("scripting.dictionary")
rstart2 = 0 'start række resultat
cstart2 = "O" 'kolonne for resultat
Application.ScreenUpdating = False
  For Each Cell In Rng1
      Uniqs.Add UCase(Cell.Value), CStr(UCase(Cell.Value))
      If Err.Number = 0 And Cell.Value <> Empty Then
        Cells(rstart2, cstart2) = Cell.Value
        rstart2 = rstart2 + 1
      End If
      Err.Clear
  Next Cell
Application.ScreenUpdating = True
End Sub
Avatar billede brianmilan Juniormester
18. december 2007 - 12:49 #7
Hej, jeg desværre ikke få den til at virke, det er vist ikke liiiige min dag ;-) jeg har sendt en mail til dig med Excel filerne. Bare når du har tid.
Avatar billede jlemming Nybegynder
03. januar 2008 - 15:24 #8
Hej Brian

Har du fået kigget på den mail jeg sendte retur
Avatar billede jlemming Nybegynder
07. januar 2008 - 09:07 #9
velbekomme
Avatar billede jlemming Nybegynder
13. januar 2008 - 15:12 #10
lukketid ?
Avatar billede jlemming Nybegynder
23. januar 2008 - 10:10 #11
Husk at accepter svaret, vælg mit navn i nedeste venstre hjørne og tryk accepter
Avatar billede brianmilan Juniormester
23. januar 2008 - 10:18 #12
Sorry, det havde jeg helt svedt ud :o) og endnu engang 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