Slumpgenerator i Excel över en lista med namn

Anonym
2019-04-17T15:21:53+00:00

Önskar i Excel (Excel 2016) skapa en slumpgenerator som slumpar fram ett personnamn från en lista i Excel med en massa personnamn (t.ex. Adam, Bodil, Lisa, Peter.) Där man helst får fram ett nytt förslag varje gång.

Antingen att det visas ett nytt slumpat namn i slumpgenerator-fältet varje gång man öppnar Excelfilen. Eller ännu hellre att man har en funktion/knapp i Excel som slumpar fram ett svar när man trycker på knappen.

Hittar bara guider för hur man slumpar fram en siffra från en lista med siffror.

Microsoft 365 och Office | Excel | För hemanvändning | Windows

Låst fråga. Den här frågan har migrerats från Microsoft Support Community. Du kan rösta på om det är till hjälp, men du kan inte lägga till kommentarer eller svar eller följa frågan.

0 kommentarer Inga kommentarer
Svar godkänt av frågeställaren
Anonym
2019-04-25T08:18:05+00:00

Du kan välja helt fritt vilket område som gäller. Jag valde så Excel känner av sista raden, men har du annan data nedanför är det givetvis bra om du själv sätter området.

Ta bort raderna

Dim Antal As Long

och

Antal = ws.Range….

Sen gör du om raden

Set TabellOmr = ws.Range("A2:C" & Antal + 1)

så området omfattar din tabell, t ex

Set TabellOmr = ws.Range("A2:C109")

Slumpvärdet måste också korrigeras så antalet hamnar inom den mängd det finns namn

Slump = Int(Antal * Rnd() + 1)

Ta bort Antal och sätt in ett värde som matchar antalet, typ 108 om du har från 2 till 109.

Var det här svaret till hjälp?

0 kommentarer Inga kommentarer

16 ytterligare svar

Sortera efter: Mest användbara
  1. Anonym
    2019-04-23T17:48:12+00:00

    När jag såg din tabell och läste att webblänkarna tappas, så insåg jag att det finns två tolkningar. I början trodde jag att du ville ha informationen, dvs den faktiska texten som en länk utgör, utskriven på samma rad som det framslumpade namnet. Nu inser jag att du förmodligen vill ha den nya cellen som en faktisk klickbar länk, precis som de är i den ursprungliga tabellen.

    Om det räcker med bara text, ingen ny koppling mot den faktiska webbadressen, då kan vi läsa ut adressen ur dina Google Maps-länkar. Vill du att länkarna följer med mer än bara text måste en ny koppling göras, och det går inte via de formler vi lekt med tidigare. Formler, inklusive UDF, returnerar bara värden - precis som en miniräknare, den byter inte batterier eller kokar kaffe, den visar bara svar.

    Men, det är inga problem om det är på det sättet. Vi låter allt köras genom vba. Där sätter vi allt som behövs. Det innebär att de tidigare formlerna kan du lägga i komposthögen. Allt - namn, adress, kartlänk - körs via koden. Du placerar bara ett bildobjekt (figur, bild, ikon, vadsomhelst) på bladet och sen talar vi om för Excel att koden ska utföras när bildobjektet klickas. Varje klick = ny slump.

    Ta bort alla formler du har sen tidigare gällande slumpa fram namn. Lägg in denna kod i samma fönster som du gjorde senast i vba. Dvs, öppna vba via Alt+F11, välj Infoga och Modul. Lägg in nedanstående.

    Sub SlumpaNamn()

        Dim ws As Worksheet

        Dim TabellOmr As Range

        Dim Slump As Long

        Dim Antal As Long

        Set ws = Worksheets(1)

        Antal = ws.Range("A1").End(xlDown).Row - 1

        Set TabellOmr = ws.Range("A2:C" & Antal + 1)

        Randomize

        Slump = Int(Antal * Rnd() + 1)

        ws.Range("E2") = TabellOmr(Slump, 1)

        ws.Range("F2") = TabellOmr(Slump, 2)

        Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Range("G2"), _

             Address:=TabellOmr(Slump, 3).Hyperlinks(1).Address, _

             TextToDisplay:="Google Maps"

    End Sub

    De saker du behöver byta ut i koden (markerat med fet stil)

    "E2" är cellen där namnet skrivs

    "F2" är cellen där gatuadressen skrivs

    "G2" är cellen där webblänken skrivs

    Jag utgår från att tabellen börjar i A1 och har tre kolumner med rubriker utan mellanrum mellan rubrik och data.

    När du fått koden på plats, lägg till en figur, vilken som helst.

    Högerklicka på figuren och välj koppla makro till knapp...

    I listan som visas syns namnet på makrot, SlumpaNamn, välj den.

    Klart. Klicka och testa om något händer.

    Här är mitt test.

    Jag lade in tärningsikon, kopplade makrot till den, och klickade. Du ser att länken till höger följer med.

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  2. Anonym
    2019-04-23T14:07:53+00:00

    Haha du är ju för bra. :-)

    Jo, makron fungerar. Dvs när Excelfilen öppnas så frågas om man vill aktivera makron.

    Det jag har, som alltså önskas visas i slumpgenerator-resultat-fälten (ute till höger) är enligt nedan.

    Namn Gatuadress Karta Google Maps
    Aftonbladet Västra Järnvägsgatan 21 Google<br> Maps
    Expressen Gjörwellsgatan 30 Google Maps
    Uppsala Nya Tidning Danmarksgatan 30 Uppsala Google Maps

    Lyckas som sagt få med allt till slumpgenerator-resultat-fälten, men webblänkarna i spalten Karta Google Maps tappas. Visas bara texten "Google Maps".

    /Peter

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  3. Anonym
    2019-04-23T11:51:08+00:00

    Vi testar med en enkel funktion, och du behöver inte kunna kod eller annat.

    Makroexemplet innehåller en så kallad UDF (som jag nämnde tidigare) så vi slår två flugor i en smäll, dvs du får se hur en UDF funkar.

    Låt säga att vi vill räkna ut arean på en cirkel. Det är tämligen enkelt att göra detta direkt i en cell med en formel, men vi gör en egen formel som vi anropar. Denna egna formel använder vi sen som vilken annan formel som helst.

    Öppna vb-editorn med Alt+F11 (det är här man skriver, justerar, hanterar all sin kod).

    Ett nytt fönster öppnas med lite menyer och ett grått fält. Gå till menyn överst och välj Infoga, därefter Modul

    Ett vitt blankt fönster visas. Där ska du klistra in följande kod:

    Function CirkelArea(ByRef c As Range) As Double

        CirkelArea = WorksheetFunction.Pi * c.Value ^ 2

    End Function

    Vår nya formel heter CirkelArea

    Gå tillbaka till excelbladet och skriv i en valfri cell ett värde som ska vara vår radie i den cirkel vi vill beräkna.

    T ex skriver du 5 i cell B2.

    I en annan valfri cell, t ex B3, skriver vi in vår formel, och det som ska följa med in i vår formel är ju cellen som innehåller radien:

    =CirkelArea(B2)

    Observera att så fort du skrivit =ci så föreslår Excel vår formel, så det är bara att trycka Tab så matas hela formeln in, ange sen bara B2 och slutparentes.

    Ändrar du värden på radien så ändras cirkelarean, som vilken annan formel som helst skulle gjort.

    Detta är en UDF (User Defined Function). En funktion som användaren definierat (skapat).

    Spara filen under vilket namn som helst men se till att du väljer makroaktiverad excel-arbetsbok. Detta ser du i raden under där man skriver in sitt filnamn; klicka på pilen till höger...

    Testa och återkom om makron fungerar. Vi gör liknande med din riktiga fil där vi gör en UDF för det du behöver söka ut - länkadresser alltså.

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  4. Anonym
    2019-04-23T11:09:24+00:00

    Vet man inte så måste man ju fråga, vilket betyder att det absolut inte var en dum fråga. Det dumma är ju att inte fråga.

    Excelfiler har olika ändelser beroende på vilken typ av fil det är. Jag nämner här bara två, vilket gäller i vårt fall. Om du har en vanlig fil utan makro heter filen Filnamn.xlsx, men har den makron heter den Filnamn.xlsm (m i slutet indikerar att det finns makro sparat i filen). Tidigare excelfiler hade ändelsen xls och då såg man inte skillnad på med/utan makro.

    Hur ser man om vba är tillåtet?

    Om man öppnar en fil som innehåller makron så kommer det upp en ruta överst som frågar om det är ok att aktivera innehållet. Det är alltså användaren själv som bestämmer om det är tillåtet (eller den inställning man satt). Men du nämner att det kan användas inom företaget, och då måste man ha koll på om företaget har satt en hårdare policy kring makron. Man kan ställa in så Excel ignorerar makron utan att du ens får en fråga, men det normala är att man får frågan och då kan du som användare också styra över det.

    Normalt är alternativ 2 i bilden ovan. Har man alternativ 1 får man inte ens en fråga om makron.

    Du undrar om det är en standard-Excelfil. Ja, själva makrodelen (koden) följer med i den fil man skrivit koden i. Lika mycket som man väljer att ha en graf på ett blad eller en bild. Det är inget man behöver sköta separat från själva filen - den finns där.

    Vi kan göra ett exempel först där du testar att köra ett simpelt makro i en fil (alltså inte den du frågar om här, utan en ny tom excelbok). Du sparar den sen som "vilketnamnsomhelst.xlsm", stänger ned, öppnar igen och ser vad som händer.

    Jag fortsätter i nästa inlägg, det börjar bli för långt.

    Här fick du i alla fall svar på frågan om makron i filer.

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer