2013-10-27 6 views
0

Как я могу найти столбец заголовка заголовка «DATA/HORA» и адаптироваться к макросу ниже?Поиск столбца заголовка конкретного имени

Sub Data() 

Dim cell As Range 
Dim lastRow As Long 

lastRow = Range("A" & Rows.Count).End(xlUp).Row 

For Each cell In Range("A1:A" & lastRow) 
If InStr(cell.Value, "-") <> 0 Then 
    cell.Value = RegexReplace(cell.Value, _ 
    "(\d{4})\-(\d{2})\-(\d{2})", "$3/$2/$1") 
End If 

cell.NumberFormat = "dd/mm/yyyy;@" 
Next 

End Sub 

Function RegexReplace 
------  
End Function 
+0

Используйте '.Find'. См. [ЭТО] (http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/) –

+0

@ Крис, я просто отправлял ответ на ваш другой вопрос, когда вы удалил его. –

ответ

1

Заменить:

lastRow = Range("A" & Rows.Count).End(xlUp).Row 
For Each cell In Range("A1:A" & lastRow) 

С:

Dim ColLetr As String 
For i = 1 To Columns.Count 
    If Cells(1, i) = "DATA/HORA" Then 
     ColLetr = Split(Cells(1, i).Address, "$")(1) 
    End If 
Next 
lastRow = Range(ColLetr & Rows.Count).End(xlUp).Row 
For Each cell In Range(ColLetr & "1:" & ColLetr & lastRow) 

EDIT # 1:

Учитывать Комментарии:

Dim ColLetr As String 
For i = 1 To Columns.Count 
    If Cells(1, i) = "DATA/HORA" Then 
     ColLetr = Split(Cells(1, i).Address, "$")(1) 
     Exit For 
    End If 
Next 
If ColLetr = "" Then 
    MsgBox "DATA/HORA not found" 
    Exit Sub 
End If 
lastRow = Range(ColLetr & Rows.Count).End(xlUp).Row 
For Each cell In Range(ColLetr & "1:" & ColLetr & lastRow) 
+1

Отсутствует «Выход для»? И что, если нет заголовка с этим совпадением? 'ColLetr' будет' '" ' –

+0

Оба хороших комментария ....... a Exit For могут немного улучшить скорость ..... если совпадение не найдено, тогда сообщение об ошибке и Exit Sub ... ... но это решение для кодера. –

Смежные вопросы