Avatar billede Mentor Juniormester
06. januar 2017 - 08:04 Der er 7 kommentarer og
1 løsning

Rulleliste i alfabetisk orden

I Ark2 har jeg en liste fra B3 - B42 kaldet 'Liste'. Den indeholder værdier i nogle - men ikke alle - felter. Værdierne vises på en rulleliste jeg har i Ark1 i celle B21. Den før nævnte 'Liste' i Ark2 er ikke nødvendigvis udfyldt i alle felterne, så for ikke at få vist de tomme felter i rullelisten i B21 i Ark1 bruger jeg denne:

=FORSKYDNING(Liste;0;0;TÆLV(Liste);-1)

Det fungerer helt efter hensigten, men jeg kunne godt tænke mig, at resultaterne i rullelisten blev vist i alfabetisk orden. Jeg har forsøgt at følge denne guide, men har svært ved at omsætte den, så den passer til mine celler. Det virker umiddelbart fint, hvis jeg bruger samme celler som guiden, altså A1 og ned, men ellers får jeg fejl på visse celler. Desuden får jeg vist de tomme felter på rullelisten.

Er der nogen, der kan hjælpe?
Avatar billede Dan Elgaard Ekspert
06. januar 2017 - 15:56 #2
Guiden virker som den skal, så det er måske en fejl-40 :-)

Husker du at trykke [CTRL] + [SHIFT] + [ENTER], når du har tastet formlen, i stedet for blot at trykke på [ENTER]?
Den viste formel er en matriksformel, og skal afsluttes med [CTRL] + [SHIFT] + [ENTER].
Avatar billede Mentor Juniormester
06. januar 2017 - 15:58 #3
Ja, det gør jeg :-).

Som sagt, så kan jeg også få guiden til at virke. Bare ikke i de celler, hvor jeg har jeg for det.
Avatar billede excelent Ekspert
07. januar 2017 - 22:04 #4
Højre klik på Ark2's Arkfane, vælg Vis Programkode og indsæt følgende :

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("B3:B42")) Is Nothing Then Exit Sub

Dim t As Integer, j As Integer, hold As String

Rng = WorksheetFunction.Transpose(Range("B3:B42"))

For t = LBound(Rng) To UBound(Rng)
  For j = t + 1 To UBound(Rng)
    If Rng(j) < Rng(t) Then hold = Rng(t): Rng(t) = Rng(j): Rng(j) = hold: hold = ""
  Next
Next

For t = LBound(Rng) To UBound(Rng)
  If rng2 = "" Then
    If Rng(t) <> "" Then rng2 = Rng(t)
      Else
    rng2 = rng2 & "," & Rng(t)
  End If
Next

With Sheets("Ark1").Range("B21").Validation
.Delete
.Add xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=rng2
.InCellDropdown = True
End With

End Sub

Koden opretter en sorteret liste til celle B21 i Ark1
Avatar billede excelent Ekspert
08. januar 2017 - 08:46 #5
Du skal lige ændre et eller  andet i Liste (B3:B42) før koden kører
Avatar billede Mentor Juniormester
08. januar 2017 - 13:08 #6
Hej Excelent, og tak for dit svar.

Din kode virker fint, men jeg er dog afhængig af at lave det uden kode, da jeg skal have det liggende, så det kan tilgåes fra Excel Online og Excel via iPad.

Kan du måske hjælpe mig at omsætte linket her, så det passer til de celler, jeg har nævnt foroven? http://www.get-digital-help.com/2010/10/26/create-a-drop-down-list-containing-alphabetically-sorted-values-in-excel/

På forhånd tak.
Avatar billede excelent Ekspert
08. januar 2017 - 15:16 #7
Avatar billede Mentor Juniormester
08. januar 2017 - 16:29 #8
Helt perfekt, tak skal du have! :-)
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

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