I'll leave you to tidy up the formatting
Sub Test()
Set wss = Sheets("CALCcache")
Set wst = Sheets("CALC")
arr = Array(1, 2, 3, 4, 7, 9)
With wss
For a = 0 To 2
Set strt = .Range("A:A").Cells.Find(arr(a), after:=.Cells(Rows.Count, 1), searchdirection:=xlNext)
Set endd = .Range("A:A").Cells.Find(arr(a), after:=.Cells(Rows.Count, 1), searchdirection:=xlPrevious)
rws = 2 + endd.Row - strt.Row
Set tgt = wst.Cells(1, 1).Offset(, 7 * a)
Range(strt, endd).Resize(, 6).Copy tgt
Next a
For a = 3 To 5
Set strt = .Range("A:A").Cells.Find(arr(a), after:=.Cells(Rows.Count, 1), searchdirection:=xlNext)
Set endd = .Range("A:A").Cells.Find(arr(a), after:=.Cells(Rows.Count, 1), searchdirection:=xlPrevious)
Set tgt = wst.Cells(1, 1).Offset(rws, 7 * (a - 3))
Range(strt, endd).Resize(, 6).Copy tgt
Next a
End With
End Sub