try this.
Sub AlignDataLabel()
Dim pointIndex As Long
With ActiveChart
' positive
With .SeriesCollection(4)
For pointIndex = 1 To .Points.Count
With .Points(pointIndex)
If Len(.DataLabel.Text) > 0 Then
.DataLabel.Top = .Top - .DataLabel.Height
.DataLabel.Left = .Left + (.Width / 2)
End If
End With
Next
End With
With .SeriesCollection(5)
For pointIndex = 1 To .Points.Count
With .Points(pointIndex)
If Len(.DataLabel.Text) > 0 Then
.DataLabel.Top = .Top - .DataLabel.Height
.DataLabel.Left = .Left
End If
End With
Next
End With
End With
End Sub
There is quite a large margin in data label size so if you want the labels nearer to corner you may need to tweak the calculations slightly