Your code could use some real clean-up.
Dim i As Long
With Sheets("Analysis")
Do Until .Range("L1").Value < 50
For i = 3 To 93
.Range("B" & i).Copy .Range("R3")
.Range("Q3").Copy
.Range("G" & i).PasteSpecial Paste:=xlPasteValues
Next i
Loop
End With
A couple of things. First, make sure that there's a mechanism somewhere that reduces the value in .Range("L1") to less than 50. Otherwise, this runs in an infinite loop (because you can't complete the condition to make it stop).
Second, make sure that your For loops are closed with Next. Either Next or Next x where x is the iterator variable you defined should work (in your case, x is i).
Third, read up on the differences of Do While-Loop, Do Until-Loop, Do-Loop While, and Do-Loop Until. Until and While are pretty self-explanatory. The placement of the condition is a bit of a difficulty for those beginning with loops and should be mastered without question. One really clear explanation can be found here.
Fourth, use With for sequential or simultaneous actions on a single object. Check this answer out for samples and explanations (check section (3)).
Hope this helps.