Я пытаюсь найти и заменить часть моей строки, используя VBA в определенном диапазоне. Например, всякий раз, когда мой код обнаружил слово «CL», я хочу заменить сигма-заголовки, начиная со следующего столбца, на «идеальную сигму». Но как мне найти букву в ячейке после того, как я нашел адрес ячейки, который содержит буквы и цифры? В то же время я также не уверен, что я express мои столбцы () правильно работают с переменными ...
Sub testing2()
Dim i As String
Dim k As String
Dim lastcolumn As Long
Dim lastcolletter As String
Dim firstcolletter As String
Dim detailedcolletter As String
Dim ra As Range
lastcolumn = Worksheets("Data").Cells(1, Columns.Count).End(xlToLeft).Column
Dim ra As Range
Set ra = Worksheets("Data").Cells.Find(What:="CL", LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
detailedcolletter = ra.Address 'detailedcolletter address = D2 here
'how to extract just the letter here only?
i = "Sigma"
k = "Ideal Sigma"
lastcolletter = Col_Letter(lastcolumn)
Columns("firstcolletter" & ":" & "lastcolletter").Replace What:=i, replacement:=k, LookAt:=xlPart, MatchCase:=False
'not sure whether i expressed columns() function with variables correctly here
End Sub
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Worksheets("Data").Cells(1, lngCol).Address(True, False), "$")
End Function
В настоящее время
Ожидается
Обновлен код
Sub testing2()
Dim i As String
Dim k As String
Dim lastcolumn As Long
Dim lastcolletter As String
Dim firstcolletter As String
Dim detailedcolletter As String
Dim ra As Range
lastcolumn = Worksheets("Data").Cells(1, Columns.Count).End(xlToLeft).Column
Set ra = Cells.Find(What:="CL", LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
detailedcolletter = ra.Address 'detailedcolletter address = D4 here
'how to extract just the letter here only?
detailedcolletter = colLetter(ra.Column)
i = "Sigma"
k = "Ideal Sigma"
lastcolletter = Col_Letter(lastcolumn)
Columns("detailedcolletter" & ":" & "lastcolletter").Replace What:=i, Replacement:=k, LookAt:=xlPart, MatchCase:=False '<----type mismatch over here
End Sub
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
End Function
Function colLetter(col As Long) As String
colLetter = Split(Columns(col).Address(, 0), ":")(0)
End Function
последняя фотография
текущий пи c