Dim dt As New DataTable
For Each col As DataControlField In GridView1.Columns
If (col.Index <> 1) and (col.Index <> 3) and (col.Index <> 6) then
dt.Columns.Add(col.HeaderText)
End If
Next
For Each row As GridViewRow In GridView1.Rows
Dim nrow As DataRow = dt.NewRow
Dim z As Integer = 0
For Each col As DataControlField In GridView1.Columns
If (col.Index <> 1) and (col.Index <> 3) and (col.Index <> 6) then
nrow(z) = row.Cells(z).Text.Replace(" ", "")
z += 1
End If
Next
dt.Rows.Add(nrow)
Next
Разве это не было бы близко к тому, что вы хотите?
Итерационный цикл For-Each проходит через КАЖДЫЙ элемент, и вы можете отфильтровать нежелательные элементы, как показано.
Или вы можете создать массив всех индексов, которые хотите обработать, и выполнить итерацию по этому массиву, чтобы обрабатывать только столбцы только с нужными индексами.