我正在建立一个模板,从用户选择的excel文件中获取所有需要的输入。
用户选择的这些excel文件通常有相同的布局,但是数据不能在完全相同的位置找到,每个文件包含随机的列合并,这使得不可能硬编码所需数据的位置。所以我创建了一些循环,但这些也不是100%有效。
给予你一个例子,我有这个用户输入excel文件:
从这里我需要检索所有持卡人的姓名,我编写了下面的代码将这些姓名加载到我的模板中,它在第4行的范围内查找单词“Naam”,然后偏移它以获得姓名。
Sub KlantInformatie(wsTemplate, wsKlantprofiel)
Dim i, j As Range
'Inladen accountnummer
wsTemplate.Range("antAccountnummer").Value = wsKlantprofiel.Range("B2").Value
'Zoeken en inladen van namen CH en ECH's
For Each i In wsKlantprofiel.Range("C4:K4").Cells
If i.Value = "Naam" Then
With wsTemplate
.Range("antNaamCH") = i.Offset(, 1).Value
.Range("antNaamECH1") = i.Offset(, 6).Value
.Range("antNaamECH2") = i.Offset(, 10).Value
.Range("antNaamECH3") = i.Offset(, 11).Value
.Range("antNaamECH4") = i.Offset(, 12).Value
.Range("antNaamECH5") = i.Offset(, 13).Value
.Range("antNaamECH6") = i.Offset(, 14).Value
.Range("antNaamECH7") = i.Offset(, 15).Value
.Range("antNaamECH8") = i.Offset(, 16).Value
.Range("antNaamECH9") = i.Offset(, 17).Value
.Range("antNaamECH10") = i.Offset(, 18).Value
End With
End If
Next i
然而这些偏移并不总是正确的,因为数据可能在不同的列中。所以我认为我需要的是一个代码,偏移到下一个非空值。但我不知道如何做到这一点。
1条答案
按热度按时间lf5gs5x21#
有一个名为
searchpos
的范围,从Naam
开始向右移动,函数nextCHvalue
将其向右移动,并返回找到的下一个可用值。当intersect
返回Nothing
时,它将在到达所用范围的末尾时停止移动。注意,不存在对标头的检查,例如检查
cardhouder
是否是标头单元的一部分。