循环低谷列根据标题获取列号

我有一个具有一定数量的列(170)和标题标题(第1行单元格名称)的模板。 这一直是相同的,直到用户之间添加列(他们被指示不要更改标题)。 这个想法是,只要涉及列的添加,就可以防止它被篡改。

我想variables来保存一些标题(容纳所有的),并检查这些与模板找出列号(在一个循环中,我认为)。 做一个函数来调用它可能是最明智的吗?

Dim ColHeader1Str as string 'literal row 1, column 1 value (which is always 'the same string and position in the template) Dim iColHeader1 as integer 'holds the (to be set) value of the column number Set ColHeader1Str = "ColHeader1" 

现在我想要一个循环遍历所有列(最后一列= 200),并检查列号是否与ColHeader1Str相匹配,并将其存储在iColHeader1

所以像这样:

 Function find_columnNmbr Dim i As Integer For i = 1 To 200 Step 1 If 'ColHeader1Str matches actual column header name 'set found integer as iColHeader1 and so forth Exit For End If Next End Function` 

我知道我错过了几个步骤,我希望你们能帮助我。

提前致谢。

更新:模板设置了列标题。 当用户与其交互时,结果可能是列移位,或者增加更多。 我有一个工作簿,需要从用户的改变模板加载数据。

IE模板有第1,2,3,4列,名称是第1列,第2列等。用户随机播放一个列,现在有5个。循环需要循环显示列标题的名称,并标识列原始模板列1,2的数量基于一个stringvariables与原来的名字,我已经事先硬编码。 这些是公共常量。

LookForHeadersfunction是:input一个string,然后searchusersheet.range(1:1)中的string。 如果find,则返回该单元格的列号,否则返回0。

 Private Function LookForHeaders(ByVal headerName As String) As Long Dim rng As Range Dim userSheet As WorkSheet Set userSheet = 'userSheet here' On Error GoTo NotFound LookForHeaders = userSheet.Range("1:1").Find(headerName).Column Exit Function NotFound: LookForHeaders = 0 End Function Private Sub Test() Dim rng As Range Dim template As WorkSheet Set template = 'template here' For Each rng In template.Range(Cells(1,1), Cells(1,200)) iColHeader1 = LookForHeaders(rng.Value) 'Do something with iColHeader1 Next rng End Sub 

不知道你在找什么,但这里是例子

 Option Explicit Public Sub Example() Dim LastCol As Long Dim i As Long LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column For i = 1 To LastCol If Cells(i) = "Name" Then Debug.Print Cells(i).Address End If Next End Sub