I actually make my own VBA function called GetColumn. It simply iterates through each column in row 1 until it reaches a cell with the text of rsHeading. Just pass in the name of the heading you are looking for, and the function will return the column number of the heading.
Public Function GetColumn(ByRef rsHeading As String) As Long
Dim lResult As Long, i As Long
lResult = 0
For i = 1 To 255
If Me.Cells(1, i) = "" Then 'end of headings reached'
lResult = i
ElseIf InStr(Me.Cells(1, i), rsHeading) > 0 Then 'as long as the heading contains the text; it doesn't have to exactly equal that text'
lResult = i
End If
If lResult <> 0 Then
Exit For
End If
Next i
GetColumn = lResult
End Function
In your example, I would then call the function like so:
rowValue.Columns.Value2[1, GetColumn("Attribute")];
rowValue.Columns.Value2[1, GetColumn("IsMandatory")];