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.
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.