2011-11-29 42 views
12

Tôi muốn tìm một ô để xem danh sách các từ. Tôi nghĩ điều này sẽ làm việc như một công thức mảng:Excel: Tìm kiếm danh sách các chuỗi trong một chuỗi cụ thể bằng cách sử dụng các công thức mảng?

{=FIND(<list of words I want to search for>,<cell I want to search>)} 

Nhưng nó chỉ tìm thấy một trận đấu khi một từ đó là trong tế bào tôi đang tìm kiếm ngồi ở hàng ghế đầu tiên của danh sách các từ tôi đang tìm kiếm . Có cách nào để viết một công thức nhìn qua toàn bộ danh sách không? Và tôi thích nếu nó không chỉ trả về TRUE/FALSE. Tôi biết cách tìm kiếm ô cho danh sách các từ và trả về TRUE/FALSE dựa trên việc một từ trong danh sách có tồn tại trong ô hay không. Tôi thực sự muốn biết từ nào đã được tìm thấy, hoặc vị trí của nó.

+0

Điều này có thể đơn giản hơn nhiều nếu bạn có thể sử dụng nhiều lệnh 'FIND'': ví dụ: sử dụng tìm kiếm một ô trên mỗi từ. Đó có phải là một lựa chọn không? Ngoài ra, bạn có thể viết một hàm VBA để xử lý việc này. –

+0

là một mảng có một từ trên mỗi ô. Ý bạn là vậy đúng không? Tôi không biết VBA, nhưng bạn có biết của bất kỳ mã VBA ví dụ mà làm một cái gì đó tương tự? –

+1

Ai có thể downvoted tôi xin vui lòng cung cấp một số thông tin phản hồi? –

Trả lời

26

Điều này sẽ trả về từ phù hợp hoặc lỗi nếu không tìm thấy kết quả phù hợp. Đối với ví dụ này tôi đã sử dụng như sau.

Danh sách từ để tìm kiếm: G1:G7
di động để tìm kiếm trong: A1

=INDEX(G1:G7,MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*(ROW(G1:G7)-ROW(G1)+1))) 

Nhập dạng công thức mảng bằng cách nhấn tổ hợp phím Ctrl + phím Shift +Nhập. Công thức này hoạt động bằng cách đầu tiên xem qua danh sách các từ để tìm kết quả phù hợp, sau đó ghi vị trí của từ trong danh sách dưới dạng giá trị dương nếu nó được tìm thấy hoặc dưới dạng giá trị âm nếu không tìm thấy. Giá trị lớn nhất từ ​​mảng này là vị trí của từ tìm thấy trong danh sách. Nếu không tìm thấy từ nào, giá trị âm sẽ được chuyển vào hàm INDEX(), sẽ xảy ra lỗi.

Để trở về số dòng của một từ phù hợp, bạn có thể sử dụng như sau:

=MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*ROW(G1:G7)) 

này cũng phải được nhập như một công thức mảng bằng cách nhấn Ctrl + phím Shift + Nhập. Nó sẽ trả lại -1 nếu không tìm thấy kết quả phù hợp.

+1

Cảm ơn, điều này thật tuyệt! –

+0

Chỉ một câu hỏi: tại sao bạn nhân với '(ROW (G1: G7) -ROW (G1) +1)' thay vì chỉ 'ROW (G1: G7)'? Với mục đích của tôi, tôi muốn hàng của từ được tìm thấy, vì vậy tôi chỉ sử dụng 'ROW (G1: G7)'. –

+0

Đó là cách làm công thức của tôi tổng quát hơn. Đối số thứ hai của hàm 'INDEX' là vị trí tương đối trong mảng, không phải là số hàng cố định. Vì vậy, nếu danh sách các cụm từ tìm kiếm của bạn bắt đầu bằng 'G3' thay vào đó, việc sử dụng' ROW (G3: G9) 'sẽ tự động trả lại kết quả không chính xác. – Excellll

0
  1. Sắp xếp danh sách từ của bạn với dấu phân cách không bao giờ xảy ra trong các từ, f.e. |
  2. luận trao đổi trong tìm cuộc gọi - chúng tôi muốn tìm kiếm nếu giá trị của ô được phù hợp với một trong các từ trong chuỗi mẫu {=FIND("cell I want to search","list of words I want to search for")}
  3. nếu các mô hình tương tự, có một nguy cơ nhận được kết quả hơn mong muốn, chúng tôi giới hạn chỉ đúng kết quả qua việc thêm & "|" với giá trị ô được kiểm tra (hoạt động tốt với công thức mảng) ô G3 có thể chứa: {=SUM(FIND($A$1:$A$100&"|";A3))} điều này đảm bảo bảng tính sẽ so sánh các chuỗi như "cellvlaue |" againts "pattern1 |", "pattern2 |" v.v.phân loại các xung đột như pattern1 = "mới được thêm", pattern2 = "được thêm" (tổng của tất cả các ô phù hợp với "đã thêm" sẽ quá cao, bao gồm giá trị mục tiêu cho các ô phù hợp với "vừa được thêm", đây sẽ là lỗi hợp lý)
1

Thêm câu trả lời này cho những người như tôi cho ai a/câu trả lời FALSE TRUE là hoàn toàn chấp nhận được

OR(IF(ISNUMBER(SEARCH($G$1:$G$7,A1)),TRUE,FALSE)) 

hoặc case-sensitive

OR(IF(ISNUMBER(FIND($G$1:$G$7,A1)),TRUE,FALSE)) 

trường hợp phạm vi cụm từ tìm kiếm là G1:G7

Hãy nhớ CTRL + SHIT + ENTER

+0

tìm kiếm là trường hợp-IN nhạy cảm – Blechdose

+0

yep, sai đường tròn ở đó, cảm ơn. editted –

+0

Hoặc đơn giản là '= OR (NOT (ISERROR (TÌM KIẾM ({" Word 1 "," Word 2 "," Word 3 "}, MyRange))))'. – Morten

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