江湖救急!!!EXCEL表格中加一VBA,需要:根据地址关键词检索出行政区划代码到指定单元格。如图

如题所述

给你写了一个自定义函数,用法跟普通函数一样,括号内为指定单元格。

代码如下,详见附件!

Public Function CTNcode(ByVal Rng As Range) As String
    Dim s1 As String, s2 As String, s3 As String
    Dim i As Long, arr()
    i = Sheet2.[a65536].End(3).Row
    arr = Sheet2.Range("A1:B" & i).Value
    CTNcode = "-"
        
    Dim dc As Object
    Set dc = CreateObject("Scripting.Dictionary")
   
    For i = 1 To UBound(arr)
        If arr(i, 1) = "北京市" Or arr(i, 1) = "天津市" Or arr(i, 1) = "上海市" Or arr(i, 1) = "重庆市" Then
            s1 = "": s2 = arr(i, 1): s3 = ""
        ElseIf arr(i, 1) Like "*" & "省" Then
            s1 = arr(i, 1): s2 = "": s3 = ""
        ElseIf arr(i, 1) Like "*" & "市" Then
            s2 = arr(i, 1): s3 = ""
        Else
            s3 = arr(i, 1)
        End If
        dc(s1 & s2 & s3) = arr(i, 2)
        If Rng.Value Like s1 & s2 & s3 & "*" Then CTNcode = arr(i, 2)
    Next
End Function

追问

大侠:我下载了你的附件,并将代码复制到我的EXCEL表格中的模块,添加了“自治区”的区划,保存后,调用函数,运行正常。
可是,如果在地址中没有输入最高级别例如“黑龙江省齐齐哈尔市龙江县”,未加黑龙江省,输入“齐齐哈尔市龙江县”,调用函数显示默认值“-”,怎么解决?

追答

是的,我原先的代码就是如果你没有写省市全称,就不能获得完全正确的结果!所以我也说了,代码可能有漏洞!

相关代码已经在附件中修正,你再试试!!

追问

刚要问你,解答就来了,我看看,谢谢你的耐心。

追答

嗯,刚才我已经修复了你说的这个问题,附件已经上传在上面了!下面是修改并简化后的代码:

Public Function CTNcode(ByVal Rng As Range) As String
    Dim s1 As String, s2 As String, s3 As String
    Dim i As Long, arr()
    i = Sheet2.[a65536].End(3).Row
    arr = Sheet2.Range("A1:B" & i).Value
    CTNcode = "-"
   
    For i = 1 To UBound(arr)
        If arr(i, 1) = "北京市" Or arr(i, 1) = "天津市" Or arr(i, 1) = "上海市" Or arr(i, 1) = "重庆市" Then
            s1 = "": s2 = arr(i, 1): s3 = ""
        ElseIf arr(i, 1) Like "*" & "省" Then
            s1 = arr(i, 1): s2 = "": s3 = ""
        ElseIf arr(i, 1) Like "*" & "市" Then
            s2 = arr(i, 1): s3 = ""
        Else
            s3 = arr(i, 1)
        End If
        If Rng.Value Like s1 & s2 & s3 & "*" Or Rng.Value Like s2 & s3 & "*" And s2 <> "" Then CTNcode = arr(i, 2)
    Next
End Function

 以前的代码本来想做一个字典,做成一个批量修改行政区划代码的按钮,现在反过来看,没有必要了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-11
用到正则表达式 提取市区县之前的字符 与sheet2中的比较,获取行政区域代码

江湖救急!!!EXCEL表格中加一VBA,需要:根据地址关键词检索出行政区划代码...
代码如下,详见附件!Public Function CTNcode(ByVal Rng As Range) As String Dim s1 As String, s2 As String, s3 As String Dim i As Long, arr() i = Sheet2.[a65536].End(3).Row arr = Sheet2.Range("A1:B" & i).Value CTNcode = "-" Dim dc As Object...

请问如何在excel指定单元格中随机插入文件夹中的图片?江湖救急!!!_百 ...
假设在A1随机插入图片,且图片根据单元格大小自动调整 图片假设有10张 图片放在E盘 一个文件名 为PIC的文件夹,图片的文件名为分别为1 2 3 4.。。10 具体见样表

相似回答