大家好我在一张纸上有以下内容(我有一个shittonne数据,但为了保持简单我使用它):
Name Adres City
Berend Laan 123 Warsnveld
Jacq Laan 456 Leiden
Steph Laan 789 Almere
假设列标题保持不变但用户添加了行,我如何找到原始列标题的列号(Name,Adres,City)。
我考虑过制作标题的字符串变量(strName等)和列的整数(iColName等)。 然后我需要检查哪个列号的预设名称(strName等)与工作表上的名称相匹配,并将此值放在整数变量(iColName等)中,最好是通过循环。这部分是我卡住的地方。
我需要检查字符串"Name"
,变量strName(原始位置1,1)到第1行(最多255列)的每个单元格,直到我得到一个匹配并将其放入相应的iColName(最后一部分是稍后进行复制/粘贴操作,并确保它可以正常工作,无论用户添加了多少列。)
我希望自己明确表达,并期待着您的回复。
提前致谢。
更新:可能需谨慎提及我想在工作簿中写入(可能已更改的)数据。
UPDATE2:简而言之,我需要一个循环来检查原始标题的字符串变量(这些是事先设置的)到工作表的所有列标题。当它们匹配时,我希望匹配的标题的列号存储在相应的Integer变量中。
答案 0 :(得分:0)
您不需要VBA
。
如果标题在第一行中是唯一的,那么像=MATCH("Adres",$1:$1,0)
这样简单的内容将返回 Adres 的列号。如果第1行中不存在 Adres ,它将返回#N/A
。
如果您真的想使用VBA,可以使用FIND
命令:
Sub Test()
Dim rFoundRange As Range
Set rFoundRange = ThisWorkbook.Worksheets("Sheet1").Rows(1) _
.Find(What:="Adres", LookAt:=xlWhole, SearchDirection:=xlNext)
If Not rFoundRange Is Nothing Then
MsgBox "Found in column " & rFoundRange.Column
'Copy the cell in row 5 of the found column to A1 of Sheet2.
ThisWorkbook.Worksheets("Sheet1").Cells(5, rFoundRange.Column).Copy _
Destination:=ThisWorkbook.Worksheets("Sheet2").Range("A1")
Else
MsgBox "Not found"
End If
End Sub