返回列表 上一主題 發帖

[發問] 請教改良速度方法

請幫忙解決錯誤。

本帖最後由 GBKEE 於 2012-11-24 15:35 編輯

book1.rar (626.53 KB)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, Rng As Range
If Target.Column = 1 Then
With Sheets("oracle")
For i = 1 To .UsedRange.Rows.Count
   Set A = .UsedRange.Rows(i).Find(Target)
   If Not A Is Nothing Then
     If Rng Is Nothing Then
     Set Rng = .UsedRange.Rows(i)
     Else
     Set Rng = Union(Rng, .UsedRange.Rows(i))
     End If
    End If
Next
End With
End If
If Not Rng Is Nothing Then Rng.Copy Target.Offset(, 1)

End Sub
請問哪裡出錯了,前一千個左右都找對了,但之後的資料就開始亂了。
另外請問
1)如何將尋找範圍規定某一個欄,不是全部都在尋找範圍。
2)If Target.Column = 1 Then 可否改成指定某個字嗎?例如:Target = "TT"
3)可否設定幾個尋找的規則嗎?例如:Client = "John"  Payment term = “TT”   ORIGIN = "USA"
4)可否將Target指定某一個儲存格?
5)可否只是copy 符合規格的某幾個欄的資料嗎?不是全部資料都copy 過去。例如 A 欄,C欄,E欄,其他的都不要。

TOP

回復 1# 198188


    請問有無高人可以幫忙解答?

TOP

回復 3# GBKEE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, Rng As Range
If Target.Column = 1 Then
With Sheets("oracle")
For i = 1 To .UsedRange.Rows.Count
    Set A = .UsedRange.Rows(i).Find(Target)
    If Not A Is Nothing Then
      If Rng Is Nothing Then
      Set Rng = .UsedRange.Rows(i)
      Else
      Set Rng = Union(Rng, .UsedRange.Rows(i))
      End If
     End If
Next
End With
End If
If Not Rng Is Nothing Then Rng.Copy Target.Offset(, 1)

End Sub
資料庫
  A               B                   C                D                 E                F                  G
    姓名        性別        電話        國藉        車牌        年齡        職業
John        男        11111111        China        有        25        Clerk
Peter        男        22222222        Germany        有        30        A/C
David        男        33333333        USA        無        15        Admin
Tina        女        44444444        China        有        25        Clerk
June        女        55555555        Italy        無        35        Clerk

想要效果:
1)如何將尋找範圍規定某一個欄,不是全部都在尋找範圍。
就是想在姓名(A)一欄設定為尋找範圍
例如:規則:想找含有"a"的資料
結果:
Tina        女        44444444        China        有        25        Clerk

2)If Target.Column = 1 Then 可否改成指定某個字嗎?例如:Target = "TT"
如何設定將Target不是Column 而是指定一個字。
規則:Target含有“in”子資料
結果:
John        男        11111111        China        有        25        Clerk
David        男        33333333        USA        無        15        Admin
Tina        女        44444444        China        有        25        Clerk

3)可否設定幾個尋找的規則嗎?例如:Client = "John"  Payment term = “TT”   ORIGIN = "USA"
規則:性別=“男”; 車牌=“有”
結果:
John        男        11111111        China        有        25        Clerk
Peter        男        22222222        Germany        有        30        A/C
規則:國藉=“China"; 車牌=“有”;年齡="25"; 職業="Clerk"
結果:
John        男        11111111        China        有        25        Clerk
Tina        女        44444444        China        有        25        Clerk

4)可否將Target指定某一個儲存格?
例如將Target指定是另一個表的儲存格"A1"
只要A1輸入"男", Target就是"男"
結果:
John        男        11111111        China        有        25        Clerk
Peter        男        22222222        Germany        有        30        A/C
David        男        33333333        USA        無        15        Admin

或者將Target指定是另一個表的儲存格"A1" 及 "A2"
只要A1輸入"男", A2輸入"有“ ;Target就是"男" 和 "有”
結果:
John        男        11111111        China        有        25        Clerk
Peter        男        22222222        Germany        有        30        A/C

5)可否只是copy 符合規格的某幾個欄的資料嗎?不是全部資料都copy 過去。例如 A 欄,C欄,E欄,其他的都不要。
設定只會copy A 欄,B欄,C欄
規則Target="有"
結果:
John        男        11111111
Peter        男        22222222
Tina        女        44444444

TOP

回復 6# GBKEE

test.rar (15.06 KB)

是可以尋找出來,但是要在第二欄輸入才會出來,如果第二欄我用的不是姓名尋找,那麼就會有重複
John         男        11111111        a*
John         男        11111111       
Peter        男        22222222       
David        男        33333333       
Tina        女        44444444       
June        女        55555555       
另外我用兩個來尋找,出來的是最後輸入的哪個規格的資料,但我想要的是要全部符合才會出來。另外第二欄出現一次後就需要自己刪除(John 男 11111111)
John         男        11111111        usa*                        clerk*
David        男        33333333                               
                       
請問可否在sheet3 做條件用途
A1 是填數字,寫明會有多少個規則,
A2表示這條規則應用在哪一欄 B2代表要尋找的資料
例如
A1 填 "1"
A2 填 "B"; B2 填 "男"
出來的是
John         男        11111111
Peter        男        22222222
David        男        33333333

例如
A1 填 "3"
A2 填 "D"; B2 填 "A"
A3 填 "E"; B2 填 "有"
A4 填 "F"; B2 填 "CLERK"
出來的是
John         男        11111111       
Tina        女        44444444       

例如
A1 填 "2"
A2 填 "D"; B2 填 "A"
A3 填 "E"; B2 填 "無"
出來的是
David        男        33333333

TOP

回復 7# 198188


請問高人明白我想表示什麼嗎?需要更加詳細表明嗎?

TOP

回復 9# stillfish00


這點我知道,不採用Option Explicit就可以了。可以用按鈕或者手動控制。最主要是可以做到那些功能。

TOP

回復 11# stillfish00

請問如果尋找條件是空格,應該如何表示?

TOP

本帖最後由 198188 於 2012-12-3 11:58 編輯

回復 13# stillfish00


    姓名         性別         電話         國藉         車牌         年齡         職業
John         男        11111111        China        有                Clerk
Peter        男        22222222        Germany        有        30        A/C
David        男        33333333        USA        無        15        ADMIN
Tina        女        44444444        China        有        25        Clerk
June        女        55555555        ITALY        無        35        Clerk


進階篩選準則:        姓名         性別         電話         國藉         車牌         年齡         職業
                                       *n*                                                                       =" "
複製欄位:                             Y        Y        Y        N        Y        N        Y

沒有反應,沒有資料出來

TOP

回復 15# stillfish00


    另一個問題,請問如果要尋找絕對值呢,應該如何寫?
例如:
KEN
KENNY
KEN CHEN
CHAN KEN

如果只要顯示ken的資料,那麼應該怎樣寫?

TOP

回復 15# stillfish00


    test1.rar (878.31 KB)
好像有些問題,無法做到

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題