Hi! I don't know where to send my solution to the problem you have attached. Anyways, in any of my programs, I would always start making things automatic as much as possible, which means that I refrain from using macros and visual basic unless it becomes really necessary. So, in solving the problem, I used random numbers between 1 and 3 for each column for rows 1 to 3 , and used the vlookup function to get the values from the table (A1:D3) corresponding to the random numbers. I did the same for table (A4:D6). The results were placed side by side and named "Result". With this approach, random numbers will be generated each time an activity is done such as recalculating, changing the value of a cell, activating the worksheet, etc. To copy the generated values to the other worksheet, I used a macro and assigned it to a button labeled "Transfer Data to Results Sheet". Each time the button is pressed, new values are generated and the results are copied to the sheet named "Result" sequentially downwards. Of course, the approach to the problem may change for larger volume of data to be processed. But this one is fast and easy.