13. april 2010 - 10:04Der er
10 kommentarer og 1 løsning
Sortere kolonne i excel tilfældigt og export herefter til CSV fil
Hej. Nogen som kan hjælpe? Har et excel ark, indeholdene navn og mobilnummer i hver sin kolonne. Jeg ønsker at kunne sortere mobilnummer tilfældigt og herefter export denne kolonne til CSV text file (Mobilnr;mobilnr;...). Skal bruges til SMS liste, som læser mobilnumre fra CSV fil - det er så det ikke er de samme som får SMS først hver gang... "en slags ryste posen". Anvendes til udlodning af ekstra-vagter etc.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ryst psoen er bedre end det der sker i dag. Det med at flytte nummer bag i køen er ikke en løsning, det skal være ryst posen. Behøver ikke være Excel kan også være andet...
VBA-koden anbringes under ark med mobilNr (Højreklik på ark / vælg Vis Programkode) - Alt+F8 / afspil vist makro - eller forbind denne med en knap
Const CsvFilNavn = "SMScsv.txt" 'kan justeres Dim filSti As String 'aktuelle mappe
Const smsKol1 = 3 Dim randomNr As Integer, nrListe() As Integer Dim antalRæk As Long, antalKol As Long Dim ræk As Long, smsLinje As String Public Sub sorterSMS() Dim ræk antalRæk = ActiveCell.SpecialCells(xlLastCell).Row antalKol = ActiveCell.SpecialCells(xlLastCell).Column filSti = findSti
ReDim nrListe(antalRæk)
Application.ScreenUpdating = False
For ræk = 2 To antalRæk randomNr = trækEtNr Cells(ræk, 3) = randomNr Next ræk
Rem Sorter iflg. kolonne C Range("A1:C" & CStr(antalRæk)).Sort Key1:=Range("C2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
Rem overfør til CSV.fil smsLinje = "" Open filSti + CsvFilNavn For Output As #1 For ræk = 2 To antalRæk smsLinje = smsLinje + CStr(Cells(ræk, 2)) & ";" Next ræk
Print #1, smsLinje Close #1
Application.ScreenUpdating = True End Sub Private Function findSti() findSti = ActiveWorkbook.Path If Right(findSti, 1) <> "\" Then findSti = findSti + "\" End If
End Function Private Function trækEtNr() As Long Dim flag As Boolean flag = False
While flag = False trækEtNr = Int((antalRæk * Rnd) + 1) If nrListe(trækEtNr) = 0 Then nrListe(trækEtNr) = trækEtNr flag = True End If Wend End Function
Super, well done! Kunne du kort beskrive hvad koden gør - mest omkring hvordan tilfældigheden er....? TAK!
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.