1) На самом деле вам не нужна буква столбца. Вы можете просто использовать номер столбца в пределах Cells
.
2) Вам необходимо l oop через каждую отдельную ячейку в строке заголовка, чтобы проверить, равно ли ее значение "Vbd"
.
Попробуйте что-то вроде следующего:
Dim i as Long
For i = 1 to LastColumn
With sht
If .Cells(1, i).Value = "Vbd" Then
Set rngToAbs = .Range(.Cells(2, i), .Cells(LastRow, i))
rngToAbs.Value = .Evaluate("=abs(" & rngToAbs.Address & ")")
End If
End With
Next
Полный код:
Sub testing()
Dim sht As Worksheet
Set sht = ThisWorkbook.Sheets("Sheet4")
Dim lastColumn As Long
lastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column
Dim lastRow As Long
lastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 1 To lastColumn
With sht
If .Cells(1, i).Value = "Vbd" Then
Dim rngToAbs As Range
Set rngToAbs = .Range(.Cells(2, i), .Cells(lastRow, i))
rngToAbs.Value = .Evaluate("=abs(" & rngToAbs.Address & ")")
End If
End With
Next
End Sub
РЕДАКТИРОВАТЬ:
Пожалуйста, см. это следующий вопрос . Обратите внимание, что в зависимости от вашей версии Excel вам может понадобиться
.Evaluate("=INDEX(abs(" & rngToAbs.Address & "),)")