返回列表 上一主題 發帖

[發問] Excel VBA有什麼現有的函數可以用來找尋二維陣列中的資料?

[發問] Excel VBA有什麼現有的函數可以用來找尋二維陣列中的資料?

各位前輩好,我剛用Excel  VBA寫巨集沒多久,目前我會將工作表中的資料,先讀到陣列後再做運算(這樣執行速度較快)

平常查某個值有沒有在陣列中很好比對,但最近遇到一個狀況,就是我要查A值(例如身份證號)有沒有在B陣列中,但B陣列中,每個行列值,並不單純是身份證號,而且一長串的文字(可能有十幾個字,而其中包含了身份證號),

有什麼現有的函數或方法可以用來比對A值有沒有在B陣列中?  ~~新手提問,煩請大家指教~~謝謝~~
冬冬

這Excel檔裡有3個工作表,工作表中的藥代欄是主要資料,我要從藥材檔的資料中,比對藥代是否一樣,目前已經可以比對藥代、健保碼、藥名是否相同;但藥材檔中的"DK"列,有這藥品的歷史修改資料,我想用健保碼跟DK列比對,看DK列中是否有相同的健保碼,不知道有什麼方法可以使用?

針劑醫令代碼比對-test.zip (38.57 KB)

冬冬

TOP

謝謝版主的回復,因為我只有六日比較有空,所以這一兩天才花時間好好理解版主的程式碼;
仔細研究完後,版主的程式碼讓我受益良多,也學到了許多概念。
像你用的"InStr"函數,就是我提問中,最需要的函數,我會好好運用它;你另外有用了"Split"函數,我有去查了Split函數的用法,這函數功能真的很不錯,我會仔細記下來。

另外再請教版主一個問題,你程式碼中"AR(i) = Application.WorksheetFunction.Transpose(.Range(Ar1(i - 1) & ":" & Ar1(i - 1)).SpecialCells(xlCellTypeConstants).Value)"這一段,如果某一列的資料有100行,而第5行是空白,後面接著有資料,但這一段程式,它讀到第5行是空白後就結束不會再讀下去,這有沒有什麼方法可以改良?

謝謝版主的細心回覆~~
冬冬

TOP

版主你好,我最近有碰到一個小問題要再請教你一下

For i = 1 To UBound(Ar1) + 1
            AR(i) = Application.WorksheetFunction.Transpose(.Range(Ar1(i - 1) & "1").Resize(ii).Value)

上面這段程式碼,平常在用的時候都ok,但我最近遇到我的資料行數超過6萬多行時,這一段程式碼就會出錯,不知道是不是Transpose有什麼限制,或者有什麼方法可以改善?

謝謝版主~~
冬冬

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題