I have a simple rule for fast VBA: NEVER ACCESS THE WORKSHEET IN A LOOP.
Rules are made to be broken. Many times you can't use an array:

1. Formatting is required
2. Imperceptible performance improvements not work the complexity
3. Debugging is oft times easier on a WS

In OP's case, since there are formulas in row 6 being used, I don't think trying to use an array would be worth the trouble of using the formulas


However, if the computations can be incorporated into the macro instead of the WS formulas, then I think it would be worthwhile using arrays if there's lots of data

Option Explicit




Sub test()
    Dim ws As Worksheet
    Dim rData As Range
    Dim aryData As Variant
    Dim r As Long
    
    Application.ScreenUpdating = False
    
    Set ws = Worksheets("main workbook")

    'row 6 formulas cleared
    Set rData = ws.Cells(7, 1).CurrentRegion
    
    aryData = rData.Value




    For r = LBound(aryData, 1) + 1 To UBound(aryData, 1)
        If aryData(r, 1) > 0 Then
            aryData(r, 2) = 100
            aryData(r, 7) = 1600
            aryData(r, 8) = 1500
            aryData(r, 11) = 100
            aryData(r, 15) = "Very Good"
            aryData(r, 18) = 500
            aryData(r, 154) = 100
            aryData(r, 156) = "Wonderful"
        End If
    Next r
    
    rData.Value = aryData
    
    Application.ScreenUpdating = True
End Sub