我有一些使用 C/PHP 的經驗,但對 VBA 不是很流利。我在 excel 中有一個包含 30 個專案的串列,每個專案都有特定的規格,我只是在串列中向下,將每個專案的規格與下面的規格進行成對比較。如果有匹配項,我會在專案旁邊的列中輸入 1。但是我得到一個運行時錯誤 9 下標超出范圍(我認為我在任何時候都沒有超過第 30 行或第 5 列)。它發生在我檢查條件是否滿足的那一行:
If data(rowi, 1) = data(rowj, 1) And data(rowi, 2) = data(rowj, 2) And Abs(data(rowi, 5) = data(rowj, 5)) = 2 Then
Sub test()
Dim data As Variant
Dim rowi As Integer
Dim rowj As Integer
data = Range("B2:F31").Value
For rowi = 0 To 28
For rowj = rowi 1 To 29
If data(rowi, 1) = data(rowj, 1) And data(rowi, 2) = data(rowj, 2) And Abs(data(rowi, 5) = data(rowj, 5)) = 2 Then
Cells(rowi, 11).Value = 1
End If
Next rowj
Next rowi
End Sub
uj5u.com熱心網友回復:
在下面查找匹配項
Option Explicit
Sub test()
Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
Dim rg As Range: Set rg = ws.Range("B2:F31")
Dim rCount As Long: rCount = rg.Rows.Count
Dim rOffset As Long: rOffset = rg.Row - 1
Dim Data() As Variant: Data = rg.Value
Dim ri As Long
Dim rj As Long
For ri = 1 To rCount - 1
For rj = ri 1 To rCount
If Data(ri, 1) = Data(rj, 1) _
And Data(ri, 2) = Data(rj, 2) _
And Abs(Data(ri, 5) - Data(rj, 5)) = 2 Then
ws.Cells(ri rOffset, 11).Value = 1
Exit For
End If
Next rj
Next ri
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503711.html
