Excel VBA: Implementing Box Muller, Zigurrat and Ratio of Uniforms Algorithm
There are a few optimizations that can be made to the code to speed it up, mainly to do with how some mathematical operations are performed in VBA. Not sure if I have it implemented 100% accurately so please review for accuracy. Also, I'm sure there are more optimizations to be had, but this is hopefully a starting point for further conversation. 

A lot of my changes may be PC specific. It may ultimately depend on your CPU and instruction set available. On my computer, this runs in about 2.5 seconds.

A list of changes:


I replaced all instances of raising something to a power of two, instead, I just multiplied the item by itself.
I pre-computed this part Sqr((2 * Exp(-1))) as it appears to always be the same, so it isn't calculated for each loop and put it into a constant.
I removed the variable v2, it wasn't really needed, you just needed to introduce Rnd in one more spot
General cleanup of the code, and renamed a few variables for clarity


Code

Sub RatioUniforms()
    Const NumberOfIterations        As Long = 10000000
    Const u2CalculationSecondHalf   As Double = 0.857763884960707 'Caching this part Sqr((2 * Exp(-1)))
    Dim Results(NumberOfIterations) As Double
    Dim PassCounter                 As Long
    Dim u1                          As Double 'Define a better name if possible
    Dim u2                          As Double 'Define a better name if possible
    Dim MyTimer                     As Double

    MyTimer = Timer
    Do While PassCounter &lt;= NumberOfIterations
        Do: u1 = Rnd: Loop Until u1 &gt; 0
        u2 = (2 * Rnd - 1) * u2CalculationSecondHalf

        If u1 * u1 &lt;= Exp(-1 / 2 * (u2 * u2) / (u1 * u1)) Then
            Results(PassCounter) = u2 / u1
            PassCounter = PassCounter + 1
        End If

    Loop
    Debug.Print "Process took: " &amp; Timer - MyTimer

 End Sub