返回列表 上一主題 發帖

[發問] 如何使用陣列比對交集的程式碼?

[發問] 如何使用陣列比對交集的程式碼?

不好意思,又來向各位大大請教
想請教的問題是(如何將兩個陣列比對,顯示出有交集的資料
例如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陣列裡面?
PKKO

回復 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
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 2# stillfish00


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

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

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題