2013-01-08 92 views
6

Làm cách nào để tìm kiếm một chuỗi trong một hàng cụ thể trong excel? tôi có chỉ mục hàng trong một biến loại dài.Tìm kiếm kết hợp chính xác của chuỗi trong hàng excel bằng VBA Macro

Dim rowIndex As Long 
rowIndex = // some value being set here using some code. 

Bây giờ tôi cần kiểm tra xem giá trị cụ thể có tồn tại trong hàng không, chỉ mục whoose là rowIndex.

Nếu có khớp, tôi cần lấy cột Chỉ mục của ô khớp đầu tiên.

Tôi đã thử sử dụng chức năng Match, nhưng tôi không biết cách chuyển biến rowIndex thay cho phạm vi ô.

Dim colIndex As Long  
colIndex = Application.Match(colName, Range("B <my rowIndex here>: Z <my rowIndex here>"), 0) 

Trả lời

11

Hãy thử điều này:

Sub GetColumns() 

Dim lnRow As Long, lnCol As Long 

lnRow = 3 'For testing 

lnCol = Sheet1.Cells(lnRow, 1).EntireRow.Find(What:="sds", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column 

End Sub 

Có lẽ tốt nhất là không sử dụng colIndex và rowIndex như tên biến như họ đã được đề cập trong Object Library Excel.

+0

Tôi nghe nói bằng Tìm thường chậm hơn so với Kết hợp. Tôi đang tìm một ví dụ phù hợp mặc dù. –

+1

Bạn cần thay 'xlPart' bằng' xlWhole' để có thể tìm thấy kết quả khớp chính xác – phil652

+0

Hoạt động tốt. Cảm ơn. – fapw

0

Sử dụng bảng tính.find (trang tính là trang tính) và sử dụng hàng phạm vi cho đối tượng dải ô của nó. Bạn có thể lấy phạm vi số như sau: worksheet.rows (rowIndex) như ví dụ

Sau đó, hãy tìm các tham số cần thiết để tìm nó cho bạn. Nếu tôi nhớ chính xác, hãy tìm trả về kết quả trùng khớp đầu tiên theo mặc định. Tôi không có Excel trong tầm tay, vì vậy bạn phải tra cứu tìm kiếm cho chính mình, xin lỗi

Tôi khuyên bạn không nên sử dụng vòng lặp cho nó dễ vỡ và chậm hơn tìm.

0

Đừng bận tâm, tôi đã tìm thấy câu trả lời.

Điều này sẽ thực hiện thủ thuật.

Dim colIndex As Long  
colIndex = Application.Match(colName, Range(Cells(rowIndex, 1), Cells(rowIndex, 100)), 0) 
0

Đây không phải là mã khác vì bạn đã tự giúp mình; nhưng để bạn có thể xem hiệu suất khi sử dụng các hàm Excel trong VBA.

PS: ** Trên một lưu ý thứ hai, nếu bạn muốn làm pattern matching sau đó bạn có thể xem xét ScriptingObject **Regex.

Các vấn đề liên quan