2012-08-29 9 views
6

Tôi cần một cách để đếm số và chữ riêng trong một ô.Excel - Đếm chữ cái và số riêng biệt trong một ô đơn lẻ

Ví dụ, nếu một tế bào chứa 1234567ABC tôi cần để có thể sản lượng này như

  • "7 số" và
  • "3 Letters".

Tôi không thể nghĩ ra cách để sử dụng chức năng len() sẽ hoạt động và chỉ countif chỉ đếm chính các ô đó.

Mọi trợ giúp sẽ được đánh giá cao.

+0

Heh, Excel. Bạn đã thử sử dụng macro chưa? –

+0

Điều đó sẽ không yêu cầu tôi biết mã để đếm số và chữ cái riêng lẻ? – CvR

Trả lời

5

Nếu mỗi ô chỉ được điền bằng số và chữ cái, cách nhanh chóng không phải vba để thực hiện việc này là lồng hàm thay thế 10 lần để xóa 10 ký tự số. những gì bạn còn lại chỉ là alpha. Sau đó, bạn có thể len() văn bản alpha/trừ số đó khỏi độ dài ban đầu để có được độ dài số.

Giả sử "1234567ABC" là trong ô A1:

Công thức này cho biết số của các chữ cái. (3)

=LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,"")) 

Công thức này mang lại cho tổng số: (7)

=LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,"")) 

Nếu bạn muốn bắt đầu xử lý các dữ liệu theo những cách khác/nữa trong chiều sâu, một giải pháp VBA sẽ có khả năng được cần thiết.

Note

Để đáp ứng yêu cầu trong bài viết ban đầu của bạn, thêm hậu tố này đến hết các công thức trên:

=x & " Numbers/Letters" 

Trong đó x = hai công thức trên. điều này sẽ thêm văn bản sau số được tính.

Đọc thêm: Các chi tiết về

Các liên kết sau một UDF VBA mà làm điều gì đó tương tự: http://www.mrexcel.com/forum/excel-questions/16364-how-remove-numbers.html

Cập nhật bổ sung (nhờ lori_m)

Công thức này là một LOT dễ dàng hơn để đọc/cập nhật:

=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},""))) 
+0

Tuyệt vời, hoạt động như một sự quyến rũ! Cảm ơn! – CvR

+4

Nó hoạt động trong Excel 2007 trở đi nhưng sẽ vượt quá giới hạn hàm lồng nhau trong các phiên bản trước. Một thay thế cho tổng số là: '= SUM (LEN (A1) -LEN (SUBSTITUTE (A1, {1,2,3,4,5,6,7,8,9,0}," ")))) ' –

+0

Ah !!! Tôi đã thử {} với thay thế và nó không hoạt động, tôi quên tổng hợp nó! (Tôi đã quá bận rộn ngày hôm nay tại nơi làm việc) tôi sẽ thêm điều này như là một bản cập nhật. Cảm ơn lori. – danielpiestrak

2

Từ câu trả lời của tôi trong Analyse format of alpha-numeric string:

Đối với một câu trả lời chi tiết hơn chuỗi này 1234567ABC456 sẽ được báo cáo như 7N3L3N

Một regexp như thế này sẽ làm công việc

  • báo chí cùng để đi VBE
  • Chèn mô-đun
  • sao chép và dán mã dưới đây
  • báo chí với nhau để trở về Excel

sau đó bạn có thể sử dụng chức năng (mà cũng phát hiện chuỗi không hợp lệ) trong Excel, ví dụ trong B1
=AlphaNumeric(A1)

enter image description here

Function AlphaNumeric(strIn As String) As String 
    Dim objRegex As Object 
    Dim objRegMC As Object 
    Dim objRegM As Object 
    Dim strOut As String 
    Set objRegex = CreateObject("vbscript.regexp") 
    With objRegex 
     .Global = True 
     .ignorecase = True 
     .Pattern = "[^\w]" 
     If .test(strIn) Then 
      AlphaNumeric = "One or more characters is invalid" 
     Else 
      .Pattern = "(\d+|[a-z]+)" 
      Set objRegMC = .Execute(strIn) 
      For Each objRegM In objRegMC 
       strOut = strOut & (objRegM.Length & IIf(IsNumeric(objRegM), "N", "L")) 
      Next 
      AlphaNumeric = strOut 
     End If 
    End With 
End Function