长时间搜索器,第一次提问者..VBA使用一个字符串数组作为SUBSTRING参数InStr函数(Excel)中
目标: - 分配一个值(城市名)到细胞 - 通过含有地址 列环在此基础上偏移0,6号邮编单元包含
这里就是我有这么远(简称阵列长度):
Sub LabelCell()
Dim SrchRng As Range, cel As Range
Dim ZipA() As String
Dim ZipB() As String
Dim ZipC() As String
Dim ZipD() As String
ZipA = Array("12345", "12346", "12347", "12348", "12349")
ZipB = Array("22345", "22346", "22347", "22348", "22349")
ZipC = Array("32345", "32346", "32347", "32348", "32349")
ZipD = Array("42345", "42346", "42347", "42348", "42349")
Set SrchRng = Range("D6:D350")
For Each cel In SrchRng
If InStr(1, cel.Value, ZipA()) Then
cel.Offset(0, 6).Value = "City 1"
ElseIf InStr(1, cel.Value, ZipB()) Then
cel.Offset(0, 6).Value = "City 2"
ElseIf InStr(1, cel.Value, ZipC()) Then
cel.Offset(0, 6).Value = "City 3"
ElseIf InStr(1, cel.Value, ZipD()) Then
cel.Offset(0, 6).Value = "City 4"
End If
Next cel
End Sub
正如你所看到的,有4个字符串数组,每个都包含多个邮政编码相对到其地区。我试过将数组声明为Variant并使用Split来无济于事。上面的代码给了我一个类型不匹配的错误,我试过的其他方法要么产生相同的或“下标超出范围”
我非常反对定义每个数组的长度和手动分配各个位置作为总数超过400个邮政编码 - 更重要的是,代码看起来很可怕。
TLDR:是否有可能实现标题的建议?
谢谢
简单地用'IsNumeric(Application.Match(cel.Value,ZipA(),0))'代替'InStr(1,cel.Value,ZipA())'',它会起作用(其他城市也一样)。但是,如果所有的邮政编码都在各自城市的二维表中,那么速度会更快,这样您可以像使用公式一样来完成:'cel.Offset(0,6).Value = Sheets(“MyZips”)。单元格(Application.Match(cel.Value,Sheets(“MyZips”).Columns(1),0),2)';) –