# How to randomize rows of data in a Excel? – User friendly Tech help

Problem:- How to randomize the given set of data in an Excel?
n
nSolution: – We would try to shuffle the rows of data in a given excel. We would try it manually first followed by code written in Vb-script.
n
n nManual Approach:-
nStep1:- Add column(say Random) in the starting of the excel
n
nStep2:- Apply formula to the first cell (=Rand ()) and drag it across all the cells of the same column in the sheet.
n
nStep3:- Apply on the Filter on the first row of the excel (Data – > Filter)
n
nStep4:- Now sort the Column one data in ascending order .All set we have our randomize data in the end.
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
nAutomation Approach:-
nWe would use Vbscript code to automate the randomization of excel data. We would replicate the above manual steps by using coding.Please refer our tutorial on Excel automation to understand the below code.
n
n
nNote:-
nPlease do the following changes to run the below code:-

n

n

• sFileName = Change it to Your file that need to be randomized
• n

• Change the sheetname in the code line   Set oReadSheet = oReadWB.Worksheets(“Sample”)
• n

n

`'Function Call to Randomize data in Excelfn_Randomize'*******************************************Function*********************************'Function Name:- fn_Randomize'Function Description:- Function to shuffle Excel data'Input Parameters:- N/A'Output Parameters:- N/A'************************************************************************************Sub fn_Randomize() 'FileName of the Excel Dim sFileName sFileName = "D:AutomateDataSheetRandomTest.xlsx" 'Creating the Excel Object Set oExcel = CreateObject("Excel.Application") 'Making Excel Visible oExcel.Visible = True 'Creating the Workbooks object Set oReadWB = oExcel.Workbooks.Open(sFileName) 'Creating the Read sheet object Set oReadSheet = oReadWB.Worksheets("Sample") 'Inserting 'Random' column as our first column in the sheet oReadSheet.Columns(1).Insert oReadSheet.Range("A1").Value = "Random" 'Running the loop till for all the rows of excel which have data For iRow = 2 To oReadSheet.UsedRange.Rows.Count 'Applying Random formula on the first column of the cell oReadSheet.Cells(iRow, 1) = "=Rand()" 'Copying only the value and removing the formula from the cell 'Try commenting the below line of code and see the cell still contains "=Rand" oReadSheet.Cells(iRow, 1).Value = oReadSheet.Cells(iRow, 1).Value Next 'Now sorting the Data 'Clearing any formuales on the Temp sheet oReadSheet.Sort.SortFields.Clear 'Sorting on the basis of Colunm =1 in the asencding order Call oReadSheet.Sort.SortFields.Add(oReadSheet.Columns(1), , xlAscending) 'Giving the range to be sorted(till the end of the sheet) 'Start cell is A2 as we have header on the Top 'End of sheet is taken as XFD1048576 as per Excel-2007 Call oReadSheet.Sort.SetRange(oReadSheet.Range("A2:XFD1048576")) 'Applying the sort oReadSheet.Sort.Apply MsgBox "Data is Randomized..Cheers!!" Set oExcel = NothingEnd Sub`

n

More Examples