04. november 2015 - 17:49Der er
27 kommentarer og 1 løsning
Excel - Hjælp til at blande en liste med personer.
Hej Alle.
Jeg sidder med en idé til "et værktøj" i excel 2013, som vil hjælpe mig virkelig meget på mit arbejde. Jeg har prøvet at sidde lidt og prøvet selv, men er sku ikke haj til excel... Endnu.
Det jeg gerne vil er: Jeg har 3 kolonner med x antale navne i
Navn1 Navn2 Navn3 Navn4 Navn5 Navn6 Navn7 Navn8 Navn9 ... og vil gerne have blandet alle navnene så jeg har en lignede opsætning med 3 kolonner, bare navnene blandet. Jeg har siddet og leget med random ,HVIS og OG funktionerne, men kan ikke lige se en måde, hvordan jeg kan få det til at virke.
Jeg tænker, at der skal være et "input" felt og et output felt, så man bare lige hurtigt kan copy paste.
Hvis der er nogle der har nogle idér, eller hurtigt vil lave en skitse vil jeg være meget glad.
A1: =PLADS(B1;$B$1:$B$9) fyld ned til A9 B1: =SLUMP() fyld ned til B9 C1:C9 tastes navne D1: =INDEKS($B$1:$C$9;A1;2) fyld ned til D9
Generere tilfældige pladser ved åbning af fil, eller ved tryk på F9 Funktioner --> Indstillinger --> Beregning --> Manuel i stedet for Automatisk og Generer tilfældige pladser ved tryk på F9
Det ser ud til at virke meget godt. Det eneste der mangler så er, at i stedet for at den tager navnene fra C1:C9 (en lodret række), så skal den tage navnene sådan som beskrevet. Altså i 3 koloner og rækker.
Jo, men det tager bare lidt tid :P Ville være fedt, hvis jeg bare kunne sætte dem ind som jeg havde dem og få dem ud på den rigtige måde. Sidder selv med en løsning, men kan simpelthen ikke få det til at virke. Mine HVIS Funktioner bliver ved med, at give mig et 0, hvis der ikke er navne nok.
Nu ved jeg ikke hvor mange navne det drejer sig om, men hvis du har navnene stående i A1:C8 kan du med følgende to formler få det til at virke I D1 skrives:
Dette kopieres til G1:I8 Det virker her. Jeg skal gerne rette den til, hvis du siger hvor navnene står og hvor der er 3 ledige kolonner til RAND funktionen. Jeg kan se du bruger dansk Excel, så du får lige formlerne på dansk også:
Fedt, jens48. Men på din version - hvis der ikke er nok navne, placere den bare navnene på tilfældige pladser over det hele. Vil gerne have at de bliver samlet i toppen/ bevar input formatet - altså er placeret i toppen og ikke bare hulter til bulder.
#17 jeg er kommet frem til samme resultat. Men prøv at slet et valgfrit navn under input. Så kommer der en tom celle og i nogle tilfælde to tommer celler. Og jeg forstår ikke hvorfor.
Nu er der ikke mange oplysninger i din mail der viser hvad der kunne være galt, men lad mig gætte. Der er huller i dine kolonner af navne. Det er nemlig den eneste måde jeg kan få den til at fejle her. Den seneste udgave kan behandle navnene korrekt, selv om der ikke er lige mange navne i hver kolonne. Men den virker kun hvis der er navne i alle celler ned til sidste navn. Er det der dit problem ligger?
Alternativt kan du slette alle formlerne og bruge denne makro i stedet:
Sub LavNavneListe() Dim c As Range Dim x, z As Integer Range("G2:I17").ClearContents Range("E1").EntireColumn.Hidden = True Range("A2:A17").Copy Destination:=Range("E1") Range("B2:B17").Copy Destination:=Range("E17") Range("C2:C17").Copy Destination:=Range("E33") Range("E1:E48").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1:E48") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("E1:E48") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With z = Application.WorksheetFunction.CountA(Range("E:E")) For Each c In Range("G2:I17") If c.Offset(0, -6) <> "" Then Do x = Int((z) * Rnd + 1) Loop While Cells(x, 5) = "" c = Cells(x, 5) Cells(x, 5).ClearContents End If Next Range("A1").Select End Sub
Ja, vil gerne have at jeg bare kan sætte f.eks. 9 navne ind i boksen også blander den dem. Hvis man gør det nu, kommer der "huller" og der er nogle navne der mangler.
Med denne makro kan du sætte navnene ind tilfældigt og den nye liste vil altid starte i øverste række:
Sub LavNavneListe2() Dim c As Range Dim x, y, z, r, k As Integer r = 2 k = 7 Range("G2:I17").ClearContents 'Range("E1").EntireColumn.Hidden = True Range("A2:A17").Copy Destination:=Range("E1") Range("B2:B17").Copy Destination:=Range("E17") Range("C2:C17").Copy Destination:=Range("E33") Range("E1:E48").Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("E1:E48") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("E1:E48") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With z = Application.WorksheetFunction.CountA(Range("E:E")) For y = 1 To z Do x = Int((z) * Rnd + 1) Loop While Cells(x, 5) = "" Cells(r, k) = Cells(x, 5) Cells(x, 5).ClearContents If k = 9 Then r = r + 1 k = 7 Else k = k + 1 End If Next Range("A1").Select End Sub
Højreklik på fanebladet og indsæt makroen under Vis koder. Du kan så indsætte en knap og linke den til makroen. Alternativt kan makroen også ændres lidt, så den starter, når der skrives noget i en bestemt celle. Hvis du ønsker det, vil jeg gerne lave ændringen for dig.
Har aldrig brugt de der macros før, så har virkelig ingen idé om hvordan man bruger dem. Men du har jo tydeligtvis lagt et stykke arbejde i det, så giver dig lige nogle point :)
Synes godt om
Ny brugerNybegynder
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.