[VBA ] 有效率的矩陣比對問題

看板Visual_Basic作者 (溫柔殺手)時間6年前 (2018/09/27 21:30), 編輯推噓3(3010)
留言13則, 4人參與, 6年前最新討論串1/1
各位板上的大大晚上好 我的問題是我有兩個一維矩陣 Head(8) 跟 Head_previous(8) 如果其中的1~4以及第七個元素都相同的話,就會判定是兩筆一樣的資料。 目前我的做法是暴力條件判斷式。程式碼如下。 If Head(7) = Head_previous(7) _ And Head(1) = Head_previous(1) _ And Head(2) = Head_previous(2) _ And Head(3) = Head_previous(3) _ And Head(4) = Head_previous(4) Then MsgBox "儲存失敗,此筆資料與前筆資料一致。" Exit Sub Else End If 是說都打完了,也只要打一次,所以還好,但是這樣寫感覺就有點Low。 想請問大大有沒有直接兩個矩陣相比的方法? 會不會比較有效率一點? 煩請高手撥冗解惑,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.98.141 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1538055005.A.1C8.html

09/28 03:39, 6年前 , 1F
不會,這樣最有效率,以後別人看也看得懂。
09/28 03:39, 1F

09/28 03:40, 6年前 , 2F
比較「好看」的方法是寫一個function專門比較
09/28 03:40, 2F

09/28 03:41, 6年前 , 3F
裡面建一個表1,2,3,4,7,用for跑遍這個表
09/28 03:41, 3F

09/28 03:42, 6年前 , 4F
每次拿到編號n 就從兩個陣列裡面取元素n出來比對
09/28 03:42, 4F

09/28 03:43, 6年前 , 5F
比到不對就設旗標為false 結束的時候看旗標內容
09/28 03:43, 5F

09/28 03:43, 6年前 , 6F
但是這樣太囉嗦了 除非你可以掌握這裡面每一部分知道
09/28 03:43, 6F

09/28 03:43, 6年前 , 7F
為什麼要那樣寫 不然照現在這樣就好
09/28 03:43, 7F

09/28 08:58, 6年前 , 8F
簡單一點的寫法喔...把你現在裡面的Else拿掉XDDDD
09/28 08:58, 8F

09/28 11:38, 6年前 , 9F
如果把and拿掉換成巢狀的if的話效率會增加嗎?
09/28 11:38, 9F

09/28 11:39, 6年前 , 10F
這樣只要其中一層不符合就跳出去了,不用比較所有條件
09/28 11:39, 10F

09/28 15:39, 6年前 , 11F
一秒要跑一百萬次再來考慮那一點效率。
09/28 15:39, 11F

09/30 11:15, 6年前 , 12F
如果真的很想要這種行為的話, 改用 AndAlso 可以達成
09/30 11:15, 12F

10/01 16:03, 6年前 , 13F
那個東東只有.NET才有 VBA是沒有的
10/01 16:03, 13F
文章代碼(AID): #1RhDjT78 (Visual_Basic)
文章代碼(AID): #1RhDjT78 (Visual_Basic)