作者yimean (溫柔殺手)
看板Visual_Basic
標題[VBA ] 有效率的矩陣比對問題
時間Thu Sep 27 21:30:02 2018
各位板上的大大晚上好
我的問題是我有兩個一維矩陣
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://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1538055005.A.1C8.html
1F:→ MOONRAKER: 不會,這樣最有效率,以後別人看也看得懂。 09/28 03:39
2F:→ MOONRAKER: 比較「好看」的方法是寫一個function專門比較 09/28 03:40
3F:→ MOONRAKER: 裡面建一個表1,2,3,4,7,用for跑遍這個表 09/28 03:41
4F:→ MOONRAKER: 每次拿到編號n 就從兩個陣列裡面取元素n出來比對 09/28 03:42
5F:→ MOONRAKER: 比到不對就設旗標為false 結束的時候看旗標內容 09/28 03:43
6F:→ MOONRAKER: 但是這樣太囉嗦了 除非你可以掌握這裡面每一部分知道 09/28 03:43
7F:→ MOONRAKER: 為什麼要那樣寫 不然照現在這樣就好 09/28 03:43
8F:推 paul60209: 簡單一點的寫法喔...把你現在裡面的Else拿掉XDDDD 09/28 08:58
9F:推 ferretwind: 如果把and拿掉換成巢狀的if的話效率會增加嗎? 09/28 11:38
10F:→ ferretwind: 這樣只要其中一層不符合就跳出去了,不用比較所有條件 09/28 11:39
11F:→ MOONRAKER: 一秒要跑一百萬次再來考慮那一點效率。 09/28 15:39
12F:推 LPH66: 如果真的很想要這種行為的話, 改用 AndAlso 可以達成 09/30 11:15
13F:→ MOONRAKER: 那個東東只有.NET才有 VBA是沒有的 10/01 16:03