tutientrung
Thành viên hoạt động
- Tham gia
- 10/3/07
- Bài viết
- 151
- Được thích
- 222
- Nghề nghiệp
- Quản lý SX
Cú pháp chuẩn của hàm Find:Cám ơn bạn nha.Cái vụ mà gõ số 25 ,26 gì đó là do mình lúc đầu thì mình để nhưng sau đó thấy không cần dài vậy nên xóa đi .Thành ra bạn không nhìn thấy ,mình mở ra xem lại mới thấy thế mới chết chứ lỵ(xóa đi xong save lại ,không để ý ghi chú ở trên text box).Xin lỗi bạn nha .MÌnh lấy code mới của bạn test lại thì phát sinh vấn đề là dãy số cần dò tìm từ nhỏ tới lớn thì Ok .Nhưng khi cho tìm dãy lớn giảm xuống nhỏ thì bị lỗi lấy hai số cuối của dãy đó .Nói hơi dài ,vậy bạn xem trong file mình giử kèm nha.Rất cám ơn sự nhiệt tình của bạn đó.Nói thêm về phần tính tổng mà bạn giúp mình trước đó mình test rrất ok luôn.Code bạn viết rất chuẩn,chạy nhanh cực luôn, mình cho chạy từ 7868 dòng sau khi chạy còn 5215 tiết kiệm được hơn 2653 dòng .Rất vui và ấn tượng với kết quả, khi loại bỏ được những cái dư thừa không đáng có .Bữa giờ nhìn mấy cái dòng dư thừa đó là bức xúc ,bức núc... mà chưa xly nó được .Cám ơn bạn lần nữa nha.
Function Find(What, [After], [LookIn], [LookAt], [SearchOrder], [SearchDirection As XlSearchDirection = xlNext], [MatchCase], [MatchByte], [SearchFormat]) As Range
Do lược bỏ các thông số để tìm nhanh hơn nhưng với dữ liệu nhiều, trong đó lại có phần hao hao giống nhau thì hàm Find đã lược bỏ chỉ số sẽ không thể tìm chính xácFind([a4])
kiểm tra và cho biết kết quả nhéFind([a4], , , 1, 2)
Lưu ý :
- Các thiết lập cho các đối số LookIn, LookAt, SearchOrder và MatchByte sẽ được lưu mỗi lần ta sử dụng phương thức này (phương thức Find). Nếu ta không khai báo giá trị cho các đối số vào lần sử dụng phương thức Find tiếp theo, các giá trị thiết lập đã lưu trước đó sẽ được sử dụng. Việc thiết lập các đối số này làm thay đổi các tùy chọn thiết lập trong hộp thoại Find, và việc thay đổi các thiết lập trong hộp thoại Find sẽ làm thay đổi các giá trị đã lưu – là những giá trị được sử dụng nếu ta bỏ qua các đối số này. Để tránh xảy ra việc này, ta nên khai báo các đối số một cách rõ ràng mỗi lần sử dụng phương thức Find này.
Híc, hơi tưng tưng "zồi", hổng hiểu sao Thầy Boy- Xỉn không dùng A, B, C mà lại 1, 2, 3..., góp vui với bạn tutientrung một cách:Cám ơn bạn nha.Cái vụ mà gõ số 25 ,26 gì đó là do mình lúc đầu thì mình để nhưng sau đó thấy không cần dài vậy nên xóa đi .Thành ra bạn không nhìn thấy ,mình mở ra xem lại mới thấy thế mới chết chứ lỵ(xóa đi xong save lại ,không để ý ghi chú ở trên text box).Xin lỗi bạn nha .MÌnh lấy code mới của bạn test lại thì phát sinh vấn đề là dãy số cần dò tìm từ nhỏ tới lớn thì Ok .Nhưng khi cho tìm dãy lớn giảm xuống nhỏ thì bị lỗi lấy hai số cuối của dãy đó .Nói hơi dài ,vậy bạn xem trong file mình giử kèm nha.Rất cám ơn sự nhiệt tình của bạn đó.Nói thêm về phần tính tổng mà bạn giúp mình trước đó mình test rrất ok luôn.Code bạn viết rất chuẩn,chạy nhanh cực luôn, mình cho chạy từ 7868 dòng sau khi chạy còn 5215 tiết kiệm được hơn 2653 dòng .Rất vui và ấn tượng với kết quả, khi loại bỏ được những cái dư thừa không đáng có .Bữa giờ nhìn mấy cái dòng dư thừa đó là bức xúc ,bức núc... mà chưa xly nó được .Cám ơn bạn lần nữa nha.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, Vung, J As Long
On Error Resume Next
If Not Intersect(Target, Range("a4")) Is Nothing Then
i = Range([b7], [b50000].End(xlUp)).Rows.Count
Vung = Range([a5] & 7).Resize(i)
J = Application.WorksheetFunction.Match([a4], Vung, 0) + 6
Range([a5] & J).Select
End If
End Sub
-------------Híc, hơi tưng tưng "zồi", hổng hiểu sao Thầy Boy- Xỉn không dùng A, B, C mà lại 1, 2, 3..., góp vui với bạn tutientrung một cách:
A5: cột muốn chọn: A, B, hay C.....Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, Vung, J As Long On Error Resume Next If Not Intersect(Target, Range("a4")) Is Nothing Then i = Range([b7], [b50000].End(xlUp)).Rows.Count Vung = Range([a5] & 7).Resize(i) J = Application.WorksheetFunction.Match([a4], Vung, 0) + 6 Range([a5] & J).Select End If End Sub
A4: dữ liệu muốn tìm (chính xác nhé, không có nó ...đứng im)
Thân (sao không thấy rủ nhậu nhỉ)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clls As Range
On Error Resume Next
If Not Intersect(Target, Range("a1:b1")) Is Nothing Then
Cells([b:b].Find([a1], , , 1, 2).Row, AscW([b1]) - IIf(AscW([b1]) > 96, 96, 64)).Select
End If
End Sub
If Not Intersect(Target, Range("B4:B65535")) Is Nothing Then
If Target <> "" Then
Target.Offset(, -1) = Now()
Else
Target.Offset(, -1).Value = Empty
End If
End If
Private Sub Worksheet_Activate()
Dim Arr(), ArrKQ(1 To 65000, 1 To 6)
Dim i As Long, s As Long, j As Long, dk As Boolean
With Sheet1
Set data = .[a4].CurrentRegion
data.Sort Key1:=.[a4], Order1:=1, Key2:=.[b4], Order1:=1, Header:=1
Arr = data.Offset(1).Value
End With
s = 1
For i = 1 To UBound(Arr) - 1
dk = False
For j = 3 To 6
If Arr(i, j) > 0 Then dk = True: Exit For
Next
If dk = True Then
ArrKQ(s, 1) = Arr(i, 1): ArrKQ(s, 2) = Arr(i, 2)
For j = 3 To 6
ArrKQ(s, j) = ArrKQ(s, j) + Arr(i, j)
Next
If (Arr(i, 1) <> Arr(i + 1, 1)) + (Arr(i, 2) <> Arr(i + 1, 2)) Then s = s + 1
End If
Next i
Application.ScreenUpdating = False
With ActiveSheet
.[a2].CurrentRegion.Offset(1).ClearContents
.[a2].Resize(s, 6) = ArrKQ
End With: data = Temp
Application.ScreenUpdating = True
End Sub
Cám ơn bác đã tham gia vào bài này .Ở bài http://www.giaiphapexcel.com/forum/...Tách-chuỗi-có-5-điều-kiện&p=260074#post260074Híc, hơi tưng tưng "zồi", hổng hiểu sao Thầy Boy- Xỉn không dùng A, B, C mà lại 1, 2, 3..., góp vui với bạn tutientrung một cách:
A5: cột muốn chọn: A, B, hay C.....Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, Vung, J As Long On Error Resume Next If Not Intersect(Target, Range("a4")) Is Nothing Then i = Range([b7], [b50000].End(xlUp)).Rows.Count Vung = Range([a5] & 7).Resize(i) J = Application.WorksheetFunction.Match([a4], Vung, 0) + 6 Range([a5] & J).Select End If End Sub
A4: dữ liệu muốn tìm (chính xác nhé, không có nó ...đứng im)
Thân (sao không thấy rủ nhậu nhỉ)