Giúp hiển thị kết quả tìm kiếm (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dungtd0106

Thành viên mới
Tham gia
22/6/11
Bài viết
5
Được thích
0
Em có 1 file như trên giờ em muốn tìm kiếm khi nhập vào(shaper-profile name:FiberHome1) FiberHome1 sẽ tìm được Interface là 1/1/1/1/8/1/1 còn khi nhập MyTv12M sẽ tìm được interface 1/1/1/1/8/1/4 bác nào biết chỉ em với em mới bắt đầu làm VBA
 

File đính kèm

Em có 1 file như trên giờ em muốn tìm kiếm khi nhập vào(shaper-profile name:FiberHome1) FiberHome1 sẽ tìm được Interface là 1/1/1/1/8/1/1 còn khi nhập MyTv12M sẽ tìm được interface 1/1/1/1/8/1/4 bác nào biết chỉ em với em mới bắt đầu làm VBA

- nếu sắp xếp lệch các tiêu đề chính sang 1 cột -> có thể tìm dễ hơn đó.
- bạn tải file đính kèm về xem sao nhé !

'-------
file hoàn chỉnh --> #9
 
Lần chỉnh sửa cuối:
dữ liệu ít thì làm thế được bác ah!! của em dữ liệu nhiều như thế này cơ nếu đẩy ra 1 cột thì thủ công quá
 

File đính kèm

dữ liệu ít thì làm thế được bác ah!! của em dữ liệu nhiều như thế này cơ nếu đẩy ra 1 cột thì thủ công quá

hehe,
bạn tải tiếp file sau về xem nhé (ko cần tách cột), cho chạy Macro

'-------
file hoàn chỉnh --> #9
 
Lần chỉnh sửa cuối:
sau khi lọc được ra kết quả là interface 1/1/1/1/3/1/1 giờ em chỉ muốn cắt thành kq là 1/1/1/1/3 em dùng hàm left thì được nhưng nó bắt chính xác ký tự cắt khi mà ký tự cuối cùng là số 3 thì đúng mà nó lớn hơn 9 như 1/1/1/1/10 thì lại phải sửa hàm left lại bác có hàm nào không phải chỉnh không chỉ em với!!
 
Lần chỉnh sửa cuối:
gio em muon cat chuoi ( interface 1/1/1/1/13/1/1) chi lay la 1/1/1/1/13 thi dung ham nao vay pro em thu left nhung khi so cuoi khong phai la 13 ma la 9 thi toan mat mot ky tu!! hic

- bạn sửa bài viết trên lại có dấu tiếng Việt xem? (nếu ko bài đó sẽ phạm quy -> bị xóa)
- yêu cầu + kết quả như thế nào?
 
sau khi lọc được ra kết quả là interface 1/1/1/1/3/1/1 giờ em chỉ muốn cắt thành kq là 1/1/1/1/3 em dùng hàm left thì được nhưng nó bắt chính xác ký tự cắt khi mà ký tự cuối cùng là số 3 thì đúng mà nó lớn hơn 9 như 1/1/1/1/10 thì lại phải sửa hàm left lại bác có hàm nào không phải chỉnh không chỉ em với!!
Bạn cần nói rõ, cắt từ sau kí tự "/" thứ 4 đến "/" thứ 5; Chứ lỡ trong mấy cái con "1" kia, có khi nhập chung thành "11" thì chết sao?


To PhucBuGis:

Thử với cái ni ngắn hơn nè:
PHP:
Option Explicit
Sub FindUp()
 Dim Rng As Range, sRng As Range
 Dim StrC As String
 
 Set Rng = Range([A1], [A1].End(xlDown))
 StrC = InputBox("Chuoi Càn Tìm Cua Ban là:", "GPE.COM Xin Chào Ban!", "FiberHome")
 Set sRng = Rng.Find(StrC, , xlFormulas, xlPart, , xlNext)
 If Not sRng Is Nothing Then
    Set Rng = Range(sRng, Rng(1))
    Set sRng = Rng.Find("/", , , , , xlPrevious)
    If Not sRng Is Nothing Then MsgBox sRng.Row, , sRng.Value
 End If
End Sub
 
sau khi lọc được ra kết quả là interface 1/1/1/1/3/1/1 giờ em chỉ muốn cắt thành kq là 1/1/1/1/3 em dùng hàm left thì được nhưng nó bắt chính xác ký tự cắt khi mà ký tự cuối cùng là số 3 thì đúng mà nó lớn hơn 9 như 1/1/1/1/10 thì lại phải sửa hàm left lại bác có hàm nào không phải chỉnh không chỉ em với!!
sau khi đọc kỹ phần đỏ đỏ mới thấy phát sinh thêm nhiều thứ về xử lý chuỗi +-+-+-+
(như bác chanhTQ đặt vấn đề là chính xác hơn khi dùng Left, Len)

Mã:
Sub GPE_TimTuKhoa()
Dim vung As Range, Rng As Range, TuKhoa As Range
Dim FirstAddress As String, n As Long, i As Long
    
    Range("D4:G1000").ClearContents
    
    Set vung = Sheets("Sheet1").Range("B1:B65000")
    Set TuKhoa = Sheets("Sheet1").Range("E2")
    Set Rng = vung.Find(TuKhoa.Value, After:=Range("B1"), LookIn:=xlValues, LookAt:=xlPart)
    
    If Not Rng Is Nothing Then
    FirstAddress = Rng.Address
    
        Do
            Range("D" & 4 + n) = Rng.Address                                'cot vi tri
            Range("E" & 4 + n) = Rng.Value                                  'gia tri
            
            For i = Rng.Row To 1 Step -1
                If Range("B" & i) Like "*" & "interface" & "*" Then
                    Range("F" & 4 + n) = [COLOR=#ff0000]XyLyChuoi[/COLOR](Range("B" & i).Value)    'final result
                    Range("G" & 4 + n) = Range("B" & i).Value               'Ket qua (Interface)
                    GoTo Next_
                End If
            Next
Next_:
            Set Rng = vung.FindNext(Rng)
            
            n = n + 1
        Loop While FirstAddress <> Rng.Address


    End If

Set vung = Nothing: Set TuKhoa = Nothing: Set Rng = Nothing
End Sub

Function [COLOR=#ff0000]XyLyChuoi[/COLOR](giatri As String) As String
Dim Chuoi As String
Dim wsFunc As WorksheetFunction
Set wsFunc = Application.WorksheetFunction


    'loai. bo? InterFace + khoang? trang' 2 ben
    Chuoi = wsFunc.Trim(wsFunc.Substitute(UCase(giatri), "INTERFACE", ""))
    'lay gia tri. phia' truoc tinh' tu` dau' / thu' 5 (tu` trai' sang phai)
    XyLyChuoi = Left(Chuoi, wsFunc.Find("/", Chuoi, _
                            wsFunc.Find("/", Chuoi, _
                            wsFunc.Find("/", Chuoi, _
                            wsFunc.Find("/", Chuoi, _
                            wsFunc.Find("/", Chuoi) + 1) + 1) + 1) + 1) - 1)
    
End Function

Link: https://www.mediafire.com/?3267829j31tip3x
 
Lần chỉnh sửa cuối:
thank pro em như thế này là đúng rồi thanks bác nhiều !!!}}}}}
 
sau khi đọc kỹ phần đỏ đỏ mới thấy phát sinh thêm nhiều thứ về xử lý chuỗi +-+-+-+
(như bác chanhTQ đặt vấn đề là chính xác hơn khi dùng Left, Len)
Như mình thấy nếu hàm xulychuoi mà viết bằng Reg Exp sẽ dễ dàng hơn
Mã:
Function XyLyChuoi1(giatri As String) As String
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+/\d+/\d+/\d+/\d+"
        XyLyChuoi1 = .Execute(giatri).Item(0)
    End With
End Function
 
Web KT

Bài viết mới nhất

Back
Top Bottom