歡迎您訪問南京安優網絡官方網站,本公司專注于:網站制作、小程序開發、網站推廣。 24小時服務熱線:400-8793-956
當前位置:南京網站制作公司 > 資訊中心 > 安優觀點
Sorry,你的問題我只能想到一個完美解決方案
來源:南京網站制作 時間:2018-01-19 08:27:45

         最近有位小伙伴私聊我一個問題,我考慮了許久也沒能想到第二個完美解決方案,問題是這樣的,該小伙伴丟給我一個Excel文件,文件有兩份工作表,我稍作簡化處理了一下。

        第一張工作表截圖如下:

        第二張工作表截圖如下:

        仔細看上面兩張截圖,可以發現第一張工作表中的節點信息就是由多個申告號碼組成。剛收到這樣的表格,我以為申告號碼只會出現在一個節點信息中。所以我就想到使用Vlookup的部分匹配來獲取運維嚴障單號,我使用的公式為=IFERROR(VLOOKUP("*"&A2&"*",IF({1,0},Sheet3!$B1:$B$1500,Sheet3!$A1:$A$1500),2,0),""),該公式就不在介紹了,前期發表的多個圖文教程都有介紹類似逆向查找的說明。
        就這樣,我把公式發給了私聊我的小伙伴,萬萬沒想到的是,上面的公式是有問題的。等我發現該錯誤的時候,是在使用VBA完美解決申告號碼會出現在多個節點信息列中。VBA代碼如下:
 
Sub sutTest()
    Dim i, iRow As Integer
    Dim strNum As String
    Dim sutArray
    '關閉屏幕刷新
    Application.ScreenUpdating = False
    '獲取運維號和節點信息
    Worksheets("Sheet3").Select
    sutArray = Range([A2], [B2].End(xlDown))
    '循環處理申告號碼
    Worksheets("Sheet4").Select
    Range([B2], [B65535]).ClearContents
    Range("A2").Select
    iRow = 1
    strNum = ""
    '循環模糊比對,能匹配到則放入運維嚴障單號列中
    Do While ActiveCell.Value <> ""
        For i = 1 To UBound(sutArray)
            If sutArray(i, 2) Like "*" & ActiveCell.Value & "*" Then
                strNum = strNum & sutArray(i, 1) & ","
            End If
        Next
        If strNum <> "" Then
            strNum = Left(strNum, Len(strNum) - 1)
        End If
        ActiveCell.Offset(0, 1).Value = strNum
        strNum = ""
        ActiveCell.Offset(1, 0).Select
    Loop
    Application.ScreenUpdating = True
End Sub
 
        上面的代碼都加以注釋了,也非常容易理解,就不在詳細解釋了。第二張工作表的申告號碼共有一萬六千多條,我剛開始使用函數來解決該問題的時候,Excel還有點卡頓。
        其實第二張工作表截圖中的運維嚴障單號列就是通過VBA代碼匹配并填寫的,小伙伴可以親自試試。接下來繼續講解上面介紹的問題,我在第二張工作表D列輸入上面的公式,并下拉到一萬多行,得出的結果如下圖所示:

        不知道各位小伙伴通過上圖能否看到問題的所在?就拿申告號碼ADSLD2300660153為例,使用VBA能匹配得到YZ-ZH-20180110-00001,但使用Vlookup部分匹配卻什么都沒找到,正常來說,是不會出現這種問題的,Vlookup不能返回多個結果,但只要有符合條件的值,一定會返回的。那出現該問題的原因是什么呢?為了找到該問題,我嘗試分解公式,從最簡單的公式開始,把公式中的Sheet3!$B1:$B$15提取出來,放到空白單元格,按下F9,詳細操作請見如下動態圖:

        可以看到第一張工作表的B2單元格的值顯示為了#VALUE!,到這里我就明白,為啥我給出去的公式是錯誤的了。為了搞明白該問題,我特地把第一張工作表的B2和B3單元格的值復制到新的工作表中,然后使用Len函數查看單元格值的長度,具體操作如下動態圖所示:

        最終終于確定了,當單元格長度超過255后,在函數中都會返回#VALUE!, 為了確定是否是微軟的Bug,我還特地把制作好的工作簿拷貝到安裝了WPS 2016專業版的電腦上,嘗試打開查看,結果驚呆了,詳細如下如所示:

        發現WPS沒有該問題,Vlookup函數可以正確顯示結果,頭一次發現了WPS軟件的強大之處,國產軟件V587(威武霸氣)。至于微軟Office為什么顯示錯誤,不要問我,因為我也不知道,有哪位小伙伴知道,請一定記得告訴我哦。
        
        好了,今天的介紹就到這了,大家如果在學習的VBA等過程中遇到任何問題,歡迎留言

本文地址:http://www.uirngq.live/news/1444.html
Tag: 完美 解決 方案
專業服務:南京網站制作,南京網站制作公司,南京網站建設公司
聯系電話:025-65016872
上一篇: 暴利賺錢莫過風水,塔羅牌占卜也還不錯
下一篇: 多關鍵字排序,多少個排序條件都可以一起來
最新案例
泰杰賽
泰杰賽
蘇派教育
蘇派教育
全國大學生公共衛生大賽
全國大學生公共衛生大賽
南京德普筒倉建安工程有限公司
南京德普筒倉建安工程有限公司
中國非金屬材料南京礦山工程有限公司
中國非金屬材料南京礦山工程有限公司
你可能感興趣
讓您的網站更易于訪問
使用SEO和內容來增加您的酒店網站
每個企業應該知道的7種視頻類型
沒人告訴你關于PPC的事
10個保護品牌的聲譽管理策略
為什么從頭開始創建網站可以改善您的SEO策略
如何為您的大型網站提供未來證明
為什么視頻是現代網頁設計的必要條件
最后更新
南京網站制作闡述10個應該將百度搜索廣告外包的理由 南京網站建設公司一直強調維護您網站的重要性 如何計算自己的獲客成本 南京網站制作解析你的網站是如何趕走你的客人的? 南京APP開發公司說說APP營銷基礎 南京網站建設公司讓你知道電商自建站不求人:8大電子商務平臺測評(2019篇) 南京網站制作說說建立商業網站的提示 SEO初學者問答 - 第1部分
服務項目
南京網站制作 營銷型網站 微信營銷 IDC網站 精品案例
内蒙古时时彩开奖走势 篮球鞋排行榜 查询福彩号码查询 怎么空手赚钱 福建11选5加奖 2076期湛江七星彩规律 福建时时彩 865棋牌手机版app下载 黑龙江十一选五中奖号码 羽毛球的球英语 仙境传说手游轮回猎人赚钱 浙江11选5开奖基本 2017三D组选分布图 波叔一波中特万料堂 不一定城市才赚钱 亚博极速11选5 中国竞彩网