2012-10-18 68 views
17

Tôi đang cố đếm số lần một chuỗi con xuất hiện trong một cột dữ liệu chuỗi trong Excel. Vui lòng xem ví dụ bên dưới.Công thức trong Excel để đếm số lần xuất hiện của các chuỗi trong chuỗi

Cột dữ liệu chuỗi (tweet) trông như thế này:

A 
1 An example string with @username in it 
2 RT @AwesomeUser says @username is awesome 

Cột với "chuỗi con" (Twitter tên màn hình) trông như thế này:

B 
1 username 
2 AwesomeUser 

Tôi muốn sử dụng một công thức đếm số lần chuỗi con từ B1, B2, v.v. xuất hiện trong các chuỗi trong cột A. Ví dụ: công thức tìm kiếm B1 sẽ trả về "2" và tìm kiếm B2 sẽ trả về "1".

Tôi không thể làm điều đó theo cách này:

=COUNTIF(A:A, "username") 

vì COUNTIF chỉ trông cho chuỗi, không phải chuỗi con. Công thức này sẽ luôn trả về "0".

Dưới đây là một formula tôi nghĩ có thể làm điều đó:

=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username")) 

Thật không may, tôi có 16.000 mục trong cột B và hàng chục ngàn người ở A, vì vậy đếm ký tự sẽ không làm việc ngay cả trên một máy tính công suất cao (Ngoài ra, kết quả trả về bởi hàm này là nghi ngờ).

Tôi nghĩ về việc sử dụng:

=COUNTIF(A:A, "*username*") 

nhưng COUNTIF đòi hỏi một chuỗi với các nhà khai thác sao; Tôi cần sử dụng tham chiếu ô do khối lượng dữ liệu.

Câu hỏi của tôi: có ai biết cách tôi có thể sử dụng công thức cho việc này không? Nếu sử dụng COUNTIF, làm cách nào để lấy tham chiếu ô trong phần có điều kiện của câu lệnh (hoặc sử dụng hàm để thay thế chuỗi trong ô được tham chiếu trong phần có điều kiện của câu lệnh COUNTIF)?

Tôi biết rằng tôi có thể phân tích cú pháp dữ liệu, nhưng tôi muốn biết cách thực hiện trong Excel.

+2

Lưu ý rằng Công thức SUMPRODUCT mà bạn trích dẫn thực hiện một điều hơi khác với chức năng COUNTIF của Chris. COUNTIF sẽ chỉ tính mỗi ô một lần nhiều nhất, do đó, mỗi ô là "điểm" 1 hoặc 0. Công thức SUMPRODUCT sẽ đếm 'ALL' hoặc" username "ngay cả khi nó xuất hiện nhiều lần trong bất kỳ ô nào - nếu bạn muốn sử dụng công thức đó, bạn nên hạn chế phạm vi thay vì sử dụng toàn bộ cột –

Trả lời

34

Bạn đang gần đó, sử dụng

=COUNTIF(A:A, "*"&B1&"*") 

(thử nghiệm trong Excel 2010)

+1

+1, = 10,001 :) – RocketDonkey

+0

Chris: Điều đó có vẻ giống như câu trả lời. Cảm ơn bạn đã hỗ trợ! Tôi đã cố gắng nối vào đêm qua nhưng tôi phải có screwed lên cú pháp. – Andrew

+1

CHRIS, điều này không hoạt động. hãy thử như sau: trong loại b1 "1", bây giờ là a2: "s1df1, a3:" dsad ", a4:" sd'1 ", a5:" sdf1111 " –

1

Một giải pháp Excel rất đơn giản cho sự xuất hiện của x-string ("ABC") vào y-string (" ABC 123 ABC 23dfABC "):

  1. Xác định độ dài của chuỗi y. Ly = len (y)
  2. Thay thế x-string bằng x1-string (chỉ thêm 1 char của bất kỳ ký tự được hỗ trợ nào vào x-string. Ví dụ: "ABC" => "ABC_") và tính chiều dài của chuỗi mới y1-string . Ly1 = len (thay thế (y, x, x1)).
  3. Không xảy ra của x-string) trong y-string = Ly1-Lý

Số Xảy ra: len (thay thế (y, x, x1)) - len (y)

danh mục cho Hiểu: x-chuỗi: "ABC" x1-chuỗi: "ABC_" y-chuỗi: "ABC 123 ABC 23dfABC" y1-chuỗi: "" ABC_ 123 ABC_ 23dfABC_"

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