返回列表 上一主題 發帖

[發問] 關於WorksheetFunction.match的使用方法?

回復 1# l020330320

搜尋速度要快可以利用陣列來找速度會快很多的!下面代碼給你參考!
  1. Private Sub CommandButton4_Click() '輸入工卡號碼
  2. Dim a As String, cardnumber As String
  3. Dim arr2()
  4. Application.ScreenUpdating = False
  5. cardnumber = InputBox("請輸入工卡號碼(建議使用條碼器)")
  6. i = 9
  7. x = 1
  8. arr = Sheets("資料庫").Range("a2:bj" & Sheets("資料庫").Cells(Rows.Count, 2).End(xlUp).Row)

  9. For j = 1 To UBound(arr, 1)
  10.     If arr(j, 2) = cardnumber Then
  11.         ReDim Preserve arr2(1 To 42, 1 To x)
  12.         arr1 = Application.Transpose(Application.Index(arr, j, 0))
  13.         For s = 1 To 42
  14.             arr2(s, x) = Application.Transpose(arr1(s, 1))
  15.         Next
  16.         x = x + 1
  17.     End If
  18. Next
  19. [a2] = cardnumber
  20. [b9].Resize(UBound(arr2, 2), UBound(arr2, 1)) = Application.Transpose(arr2)
  21. 'Sheets("資料庫").Activate

  22. 'a = Application.WorksheetFunction.Match(CDbl(cardnumber), Sheets("資料庫").[B:B], 0) '設定資料庫裡的B欄搜尋結果為a
  23. 'If a = "0" Then
  24. '    MsgBox "未搜尋到您所輸入的工卡號碼,請確認資料來源無誤。"
  25. '    Sheets("登錄").Select
  26. '    Exit Sub
  27. 'Else
  28. '    Sheets("登錄").Range("A2") = cardnumber
  29. '    firstAddress = Cells(a, 2).Address
  30. '
  31. '    Do
  32. '        Sheets("資料庫").Select
  33. '        ActiveSheet.Range(ActiveSheet.Cells(a, 1), ActiveSheet.Cells(a, 62)).Select '選擇並複製欄位
  34. '        Selection.Copy
  35. '
  36. '        Sheets("登錄").Select
  37. '            '如果判定B欄C欄及K欄都為空值的話則貼上
  38. '            If (ActiveSheet.Cells(i, 2) = "" And ActiveSheet.Cells(i, 3) = "" And ActiveSheet.Cells(i, 6) = "") Then
  39. '            ActiveSheet.Cells(i, 2).Select
  40. '            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  41. '            Application.CutCopyMode = False
  42. '
  43. '            Sheets("資料庫").Select
  44. '
  45. '            'a = a.Nextmatch()
  46. '            secondAddress = Cells(a, 2).Address '判斷ADDRESS後選取複製欄位
  47. '            Else
  48. '            End If
  49. '        i = i + 1
  50. '
  51. '    Loop While secondAddress <> firstAddress
  52. '    Sheets("登錄").Select
  53. '
  54. 'End If
  55. Range("K9") = "=G7"
  56. Range("K10") = "=H7"
  57. Range("K11") = "=I7"
  58. Range("K12") = "=J7"
  59. Range("K13") = "=K7"
  60. Range("K14") = "=L7"
  61. Range("K15") = "=M7"
  62. Range("K16") = "=N7"
  63. Range("K17") = "=O7"
  64. Range("K18") = "=P7"
  65. Application.ScreenUpdating = True
  66. End Sub
複製代碼

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題