Board logo

標題: [發問] 如何使用陣列比對交集的程式碼? [打印本頁]

作者: PKKO    時間: 2016-8-3 13:21     標題: 如何使用陣列比對交集的程式碼?

不好意思,又來向各位大大請教
想請教的問題是(如何將兩個陣列比對,顯示出有交集的資料
例如A、B 陣列都是 相同大小
dim aa : redim aa(1 to 2,1 to 2)
dim bb: redim bb(1 to 2,1 to 2)
但aa(1,1)=true :aa(1,2)=true
而bb(1,1)=true

因此只有(1,1)這個陣列位置是相同都是true

除了跑回圈之外
有哪種方法可以得知結果嗎?
例如新增陣列cc
dim cc: redim cc(1 to 2, 1 to 2)
然後將比對結果放入CC陣列裡面?
作者: stillfish00    時間: 2016-8-3 17:36

回復 1# PKKO
就是跑迴圈啊...有啥理由不能跑迴圈
如果會執行很多次這種運算,就包成Function
  1. '二維矩陣做AND
  2. Function MatrixAND2D(matrix1, matrix2)
  3.     If LBound(matrix1) <> LBound(matrix2) Or _
  4.         UBound(matrix1) <> UBound(matrix2) Or _
  5.         LBound(matrix1, 2) <> LBound(matrix2, 2) Or _
  6.         UBound(matrix1, 2) <> UBound(matrix2, 2) Then
  7.         Err.Raise vbObjectError + 9999, "MatrixAND()", "兩矩陣上下標不同"
  8.     End If
  9.    
  10.     Dim arResult, r, c
  11.     ReDim arResult(LBound(matrix1) To UBound(matrix1), LBound(matrix1, 2) To UBound(matrix1, 2)) As Boolean
  12.     For r = LBound(matrix1) To UBound(matrix1)
  13.         For c = LBound(matrix1, 2) To UBound(matrix1, 2)
  14.             arResult(r, c) = matrix1(r, c) And matrix2(r, c)
  15.         Next
  16.     Next
  17.     MatrixAND2D = arResult
  18. End Function

  19. Sub test()
  20.     Dim a(1 To 2, 1 To 2) As Boolean, b(1 To 2, 1 To 2) As Boolean
  21.     Dim c
  22.    
  23.     a(1, 1) = True: a(1, 2) = True: b(1, 1) = True
  24.     c = MatrixAND2D(a, b)
  25.     [a1].Resize(2, 2) = c
  26. End Sub
複製代碼

作者: PKKO    時間: 2016-8-3 23:06

回復 2# stillfish00


    感謝S大的回覆
小弟只是想...1=偷懶...2=速度測試
想說會不會有一行程式碼可以直接比對,且執行速度比我跑回圈比對還要快的可能性
因為有時會有比對需求

不過謝謝大大的建議,包成FUNCTION是很好的建議,這樣的確可以達到重複利用程式碼的功能!
感謝S大!!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)