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欄,其他的都不要。作者: 198188 時間: 2012-11-25 21:41
If Target.Column = 1 Then 這個好像是 搜尋範圍 他要將 Target 改成 "TT" ,只是 看了看,感覺不順.....作者: 198188 時間: 2012-11-30 14:08
回復 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作者: GBKEE 時間: 2012-12-1 10:59
是可以尋找出來,但是要在第二欄輸入才會出來,如果第二欄我用的不是姓名尋找,那麼就會有重複
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
請問下面這句哪裡出錯了? 執行階段錯誤‘9’:陣列索引超出範圍
If IsError(Application.VLookup(Wb.Worksheets("New form of payment report").Range("B" & j).Value, Worksheets("outstanding payments").Range("A:A"), 1, False)) Then
i = Worksheets("outstanding payments").Range("A" & Worksheets("outstanding payments").Rows.Count).End(xlUp).Row
fs = "C:\Documents and Settings\USER\桌面\payment report 2012.xlsx"
Set Wb = Workbooks.Open(fs)
With Worksheets("New form of payment report")
j = Worksheets("New form of payment report").Range("E" & Worksheets("New form of payment report").Rows.Count).End(xlUp).Row
End With
Do
If Wb.Worksheets("New form of payment report").Range("k" & j).Value = Date And Wb.Worksheets("New form of payment report").Range("h" & j).Value >= 0.95 Then
If IsError(Application.VLookup(Wb.Worksheets("New form of payment report").Range("B" & j).Value, Worksheets("outstanding payments").Range("A:A"), 1, False)) Then
Worksheets("outstanding payments").Range("A" & i + 1) = Wb.Worksheets("New form of payment report").Range("B" & j).Value
Worksheets("outstanding payments").Range("F" & i + 1) = Wb.Worksheets("New form of payment report").Range("H" & j).Value
j = Worksheets("New form of payment report").Range("E" & Worksheets("New form of payment report").Rows.Count).End(xlUp).Row
End With
Do
ThisWorkbook.Activate
If Wb.Worksheets("New form of payment report").Range("k" & j).Value = Date And Wb.Worksheets("New form of payment report").Range("h" & j).Value >= 0.95 Then
If IsError(Application.VLookup(Wb.Worksheets("New form of payment report").Range("B" & j).Value, Worksheets("outstanding payments").Range("A:A"), 1, False)) Then
Worksheets("outstanding payments").Range("A" & i + 1) = Wb.Worksheets("New form of payment report").Range("B" & j).Value
Worksheets("outstanding payments").Range("F" & i + 1) = Wb.Worksheets("New form of payment report").Range("K" & j).Value
End If
i = i + 1
End If
j = j - 1
Loop While j = 2
Wb.Close 0
End Sub
複製代碼
請問
Do
Loop While
是不是寫錯了?他不懂得循環做作者: GBKEE 時間: 2012-12-14 14:54