Đếm phạm vi Excel trong một ô


3

Tôi đang cố gắng so sánh số lượng và số lượng mục trong bảng tính excel.

Ví dụ,

QTY RefDes      # of Entries    QTY Match RefDes?
3   R1,R5,R22   3               MATCH
3   C1,C2,C3    3               MATCH
3   U1-U3       1               MISMATCH
4   U1-U3, U5   2               MISMATCH

Bằng cách sử dụng =LEN(TRIM(B2))-LEN(SUBSTITUTE(TRIM(B2),",",""))+1 đối với cột được liệt kê # Entries, tôi có thể dễ dàng so sánh QTY được liệt kê với ReDes khi các giá trị được phân tách bằng dấu phẩy như trong R1, R5, R22.

(Giới thiệu đối sánh QTY? Chỉ đơn giản là so sánh nếu cột QTY khớp với cột # của mục nhập.)

Tuy nhiên, tôi cũng có trường hợp U1-U3 sẽ biểu thị một phạm vi từ U1 đến U3 hoặc U1, U2, U3. Số lượng thực tế là 3, nhưng công thức trên trả về giá trị là 1 vì không có dấu phẩy. Làm thế nào tôi có thể giải thích cho trường hợp này?


1
Nhiều khả năng điều này sẽ yêu cầu vba.
Scott Craner

Tôi đoán sẽ tốt nhất khi chuyển đổi U1-U3 thành U1, U2, U3?
Dave

Có cách nào dễ dàng để chuyển đổi U1-U3 thành U1, U2, U3 không?
nachan84

1
Một lần, sử dụng VBA. Trong tương lai, hãy sử dụng xác thực dữ liệu để buộc các mục nhập ở định dạng dấu phẩy
Selkie

Câu trả lời:


0

Điều này có thể được thực hiện với một công thức, nhưng có một cảnh báo.

Excel có một hàm tiện dụng gọi là EVALUATE (), đánh giá các chuỗi văn bản dưới dạng phương trình và tạo ra kết quả số. Thông báo trước phải được thực hiện với các hạn chế về cách sử dụng nó.

Tôi đoán rằng phạm vi của bạn trong Cột U có thể là bất kỳ kích thước nào, vì vậy một cách hay để lấy số đếm sẽ là phép trừ. tức là đối với U1-U3, trích xuất "1-3" và làm toán. Công thức này thực hiện điều đó:

 =IFERROR(ABS(EVALUATE((REPLACE(MID(B2,FIND("-",B2)-1,4),3,1,"")))),0)

Sử dụng B5 làm ví dụ, phần MID () lấy các ký tự ở hai bên của "-" và cho 1-U3. REPLACE () loại bỏ U và EVALUATE () thực hiện phép trừ, cho -2. ABS () cung cấp cho 2 và IFERROR () xử lý các hàng không có phạm vi U. Dưới đây là dữ liệu với phương trình trên trong Cột E và tổng của cột này cộng với phương trình của bạn ở trên trong Cột F:

enter image description here

Bây giờ về cảnh báo. Vì bất kỳ lý do gì, EVALUATE () chỉ khả dụng nếu nó được sử dụng trong định nghĩa của phạm vi được đặt tên. Vì vậy, để sử dụng phương trình trên, nhấp vào bất kỳ ô nào, đặt tên cho ô (tôi đã sử dụng "Funk" ở đây) và dán phương trình vào ô "Tham chiếu đến:".

enter image description here

Bây giờ tên có thể được sử dụng như một hàm. Nhập "= Funk" (không có dấu ngoặc kép) trong E2 và điền xuống.

Nếu bạn không thể có cột trợ giúp, bạn có thể kết hợp hai phương trình trong định nghĩa tên. Nhưng tôi sẽ cảnh báo bạn rằng các công thức khắc phục sự cố trong hộp nhỏ là PITA. Thật xấu hổ khi chức năng này không có sẵn mà không nhảy qua các vòng.

Tôi hi vọng cái này giúp được.


Vì bất kỳ lý do gì, EVALUATE () chỉ khả dụng nếu nó được sử dụng trong định nghĩa của phạm vi được đặt tên. Nói đúng ra, nó không phải là một hàm Excel. Nó thực sự là một hàm Excel 4.0 Macro (còn được gọi là XLM4). Vì vậy, ví dụ, nó không thể được lưu trữ trong tệp .xlsx. Các macro XLM4 khác cũng có thể được sử dụng thông qua phương thức "Tên xác định" này
Ron Rosenfeld

Vâng, cảm ơn đã chỉ ra rằng. Tôi có thể đã làm một công việc tốt hơn để giải thích điều đó, tôi đoán. Tôi xem những chiếc XLM4 này là những con khủng long chưa chết. Nhưng tôi vẫn nghĩ rằng đây sẽ là một hàm "thực" hữu ích cần có trong Excel. Tôi đã thấy hai câu hỏi ở đây trong tuần trước có thể được xử lý với EVALUATE ().
Bandersnatch

1
Ai biết làm thế nào MS đưa ra quyết định của họ về các loại vấn đề. Tôi sẽ không nín thở :-), đặc biệt vì đây cũng là chức năng của VBA.
Ron Rosenfeld
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.