Board logo

標題: [發問] IF 多條件判斷如何改為陣列執行| [打印本頁]

作者: starry1314    時間: 2015-10-12 09:19     標題: IF 多條件判斷如何改為陣列執行|

本帖最後由 starry1314 於 2015-10-12 09:33 編輯

功能:D欄內 不為【L。P。T。Q。I】一律取代為A
請問如何改為以陣列模式執行呢? 因就算關閉螢幕刷新與自動計算,還是有點慢
  1. Sub 代號替換()

  2. For I = 2 To 50000
  3. Ν = Range("d" & I)
  4. If Ν <> "L" And Ν <> "P" And Ν <> "T" And Ν <> "Q" And Ν <> "I" Then
  5. Range("D" & I) = "A"
  6. End If
  7. Next
  8. End Sub
複製代碼

作者: lpk187    時間: 2015-10-12 10:54

回復 1# starry1314


    你要的陣列模式這這樣嗎?
  1. Sub 代號替換()
  2. Dim Arr(1 To 49999, 1 To 1)
  3. For I = 2 To 50000
  4. Ν = Range("d" & I)
  5. If Ν <> "L" And Ν <> "P" And Ν <> "T" And Ν <> "Q" And Ν <> "I" Then
  6.     Arr(I - 1, 1) = "A"
  7. Else
  8.     Arr(I - 1, 1) = Range("d" & I)
  9. End If
  10. Next
  11. [d2].Resize(UBound(Arr)) = Arr
  12. End Sub
複製代碼

作者: lpk187    時間: 2015-10-12 11:00

回復 1# starry1314

這樣也行
  1. Sub 代號替換1()
  2. Dim Rng As Range
  3. Dim arr
  4. ro = Cells(Rows.Count, 4).End(xlUp).Row
  5. ReDim arr(1 To ro, 1 To 1)
  6. For Each Rng In Range("d2:D" & ro)
  7. i = i + 1
  8. Ν = Rng.Value
  9. If Ν <> "L" And Ν <> "P" And Ν <> "T" And Ν <> "Q" And Ν <> "I" Then
  10.     arr(i, 1) = "A"
  11. Else
  12.     arr(i, 1) = Rng.Value
  13. End If
  14. Next
  15. [d2].Resize(UBound(arr)) = arr
  16. End Sub
複製代碼

作者: 准提部林    時間: 2015-10-12 11:38

Sub AA1012_1()
Dim Arr, i&
With Range([D2], Cells(Rows.Count, "D").End(xlUp))
   Arr = .Value
   For i = 1 To .Count
     If InStr("LPTQI", Arr(i, 1)) = 0 Then Arr(i, 1) = "A"
   Next i
   .Value = Arr
End With
End Sub
作者: starry1314    時間: 2015-10-13 13:09

回復 4# 准提部林

謝謝版大 來詳細了解下 InStr
作者: starry1314    時間: 2015-10-13 13:10

回復 3# lpk187
謝謝~是的 來試試看




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