Maybe with some arrays as below:
Sub test() Dim rng As Range, var As Variant, oVar As Variant, x As Long, y As Long, z As Long Set rng = Sheet1.UsedRange Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1) var = rng.Value ReDim oVar((UBound(var)) * (UBound(var, 2) - 1) - 1, 1) For x = 1 To UBound(var) For y = 2 To UBound(var, 2) oVar(z, 0) = var(x, 1) oVar(z, 1) = var(x, y) z = z + 1 Next y Next x Sheet2.Range("A2").Resize(UBound(oVar) + 1, UBound(oVar, 2) + 1) = oVar End Sub