Dùng hàm gì để đếm số ký tự "C" trong câu Cộng hoà xã hội chủ nghĩa Việt Nam (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
ô A1 của em có nội dung là Cộng hòa xã hội chủ nghĩa Việt nam, bây giờ em phải dùng hàm gì để đếm số ký tự c có trong câu đó ah? (tất nhiên kết quả là 2). Em xin cảm ơn
 
ô A1 của em có nội dung là Cộng hòa xã hội chủ nghĩa Việt nam, bây giờ em phải dùng hàm gì để đếm số ký tự c có trong câu đó ah? (tất nhiên kết quả là 2). Em xin cảm ơn
Mã:
=SUM(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="c",1,0))
 
Hic...hic, hàm khó như thế này thì mình chào thua là đúng...cảm ơn thày Concogia nhiều lắm. Vậy mà tối qua em cứ tưởng có hàm nào đếm trực tiếp được không làm được là do không nhớ hàm thôi....
 
Mình thấy dùng như sau cũng được và dễ hiểu:

=LEN(A1)-LEN(SUBSTITUTE(LOWER(A1),"c",""))
 
Mình thấy dùng như sau cũng được và dễ hiểu:

=LEN(A1)-LEN(SUBSTITUTE(LOWER(A1),"c",""))
Vì SUBSTITUTE có phân biệt HOA thường nên anh dùng LOWER để biến đổi. Tuy nhiên, hàm này lại lỗi với font Unicode nên cũng khó mà chính xác trong những trường hợp đặc biệt (chẳng hạn với ký tự )
Thôi thì cứ dùng thế này: =LEN(A1)-LEN(SUBSTITUTE(A1,"c","")) và khuyến cáo rằng kết quả có phân biệt HOA thường
 
Bài toán tách tên cơ quan ban hành văn bản

Em định dùng bài toán đơn giản trên để áp dụng vào bài tập của em như ở dưới nhưng phức tạp như vậy chắc là em không nghĩ ra, rất mong mọi người giúp em. bài toán cần giúp đỡ của em như hình đính kèm (có sẵn cột A), lời giải điền ở cột B như sau ah:
TachchuThongkecongvan.jpg
 
Em định dùng bài toán đơn giản trên để áp dụng vào bài tập của em như ở dưới nhưng phức tạp như vậy chắc là em không nghĩ ra, rất mong mọi người giúp em. bài toán cần giúp đỡ của em như hình đính kèm (có sẵn cột A), lời giải điền ở cột B như sau ah:
TachchuThongkecongvan.jpg
Thử công thức này tại cell B2 xem thế nào:
PHP:
=TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của",REPT(" ",255)),255))
 
Cái này có sợ lỗi khi chuyển các loại font qua lại với nhau không hả thày?
REPT(" ",255)),255) ý nghĩa của nó là gì ah?
Bạn dùng font gì thì cứ gõ vào cho đúng thôi. Ví dụ chữ "giữa", nếu là font VNI thì bạn phải ghi thành "giöõa" vào công thức (sao tui biết được)
REPT(" ",255) sẽ tạo ra 255 khoảng trắng
 
Thử công thức này tại cell B2 xem thế nào:
PHP:
=TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của",REPT(" ",255)),255))
Giả sử nội dung là : " Hợp đồng giữa Cty A và nhà thầu của Cty B" thì kết quả sẽ bị sai sư phụ ơi.
 
Thử với công thức này xem:
Mã:
=RIGHT(SUBSTITUTE(A1,"giửa","của"),LEN(A1)-FIND(" ",A1,FIND("của",A1)))
Hoặc, nếu cấu trúc đúng như trong ví dụ & không quan tâm đến Fonnt thì thử công thứcnày
Mã:
=RIGHT(A1,LEN(A1)-SMALL(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=" ",ROW(INDIRECT("1:"&LEN(A1))),""),3))
Thân
 
Giả sử nội dung là : " Hợp đồng giữa Cty A và nhà thầu của Cty B" thì kết quả sẽ bị sai sư phụ ơi.
Dĩ nhiên là đầu vào làm sao mình phải có sự thống nhất, tình huống nhập dữ liệu chắc không có như anh giả sử đâu. Bởi suy cho cùng như thế thì nhà thầu sẽ là XN mà XN không có tư cách pháp nhân nên vẫn là Công ty B thôi.

Tất nhiên là của anh thì các thày vẫn làm được với điều kiện rằng sau khi thay từ giữa bằng từ của thì sẽ có 2 chữ của (Hợp đồng của Cty A và nhà thầu của Cty B). Lúc này làm thế nào để máy chỉ làm việc với từ của đầu tiên thôi.

Cái này bác đọc lại bài tách họ và tên thì sẽ ra vấn đề thôi (tức là giữa họ và tên là một ký tự trắng), trên diễn đàn đã có bài này và đã có cách cụ thể dùng hàm để chỉ làm việc với ký tự trắng cuối cùng.
 
Lần chỉnh sửa cuối:
Giả sử nội dung là : " Hợp đồng giữa Cty A và nhà thầu của Cty B" thì kết quả sẽ bị sai sư phụ ơi.
Người ta đưa lên dữ liệu có nhiêu đó thì mình làm nhiêu đó. Người ta cũng nói rõ ràng rằng:
Vấn đề mấu chốt là cột A sẽ được tách nội dung phần chữ sau chữ của hoặc chữ giữa
Vậy nếu có gì đó sai nguyên tắc là lỗi của tác giả
 
Mã:
=RIGHT(A1,LEN(A1)-SMALL(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=" ",ROW(INDIRECT("1:"&LEN(A1))),""),3))
Thân
Theo file ví dụ của em thì công thức này của bác cò bị thiếu chuỗi.
Công thức của em;
Mã:
=IF(ISNUMBER(FIND("giữa",A2,1)),RIGHT(A2,LEN(A2)-MATCH("*"&"giữa",MID(A2,1,ROW(INDIRECT("1:"&LEN(A2)))),0)-1),RIGHT(A2,LEN(A2)-MATCH("*"&"của",MID(A2,1,ROW(INDIRECT("1:"&LEN(A2)))),0)-1))-CTRL-SHIFT-ENTER]
 

File đính kèm

Theo file ví dụ của em thì công thức này của bác cò bị thiếu chuỗi.
Công thức của em;
Mã:
=IF(ISNUMBER(FIND("giữa",A2,1)),RIGHT(A2,LEN(A2)-MATCH("*"&"giữa",MID(A2,1,ROW(INDIRECT("1:"&LEN(A2)))),0)-1),RIGHT(A2,LEN(A2)-MATCH("*"&"của",MID(A2,1,ROW(INDIRECT("1:"&LEN(A2)))),0)-1))-CTRL-SHIFT-ENTER]
Bó Bi với anh Bí Bo này luôn:
Lúc thì : "Hợp đồng giữa Cty A và nhà thầu của Cty B" . Lúc lại: "HĐ giữa Cty A va nhà thầu của Cty B"
Dữ liệu như thế thì Thầy Pm phối hợp với Thầy ndu cũng phải "Bó Bi"
Thật ra đây là bài toán tách chuỗi, tùy theo dữ liệu mà giải quyết, nếu chủ topic không đưa được tất cả các kiểu dữ liệu thì không giải quyết triệt để được vấn đề
Mình nói nếu cấu trúc dữ liệu đúng như trong ví dụ thì công thức mình sẽ lấy Right từ "thằng" khoảng trắng thứ 3 tới hết mà không quan tâm các cái khác
Híc, "bó bi"
Thân
[TABLE="width: 216"]
Sao nó có cái bảng, ngộ zị
[TR]
[TD][/TD]
[/TR]
[/TABLE]
 
Thử công thức này tại cell B2 xem thế nào:
PHP:
=TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của",REPT(" ",255)),255))
Hình như thằng Trim trong trường hợp này không có tác dụng hay sao thày ah. Khoảng trắng đằng trước nó không xóa được.

Em thắc mắc là nếu số ký tự sau từ giữa lớn hơn 255 thì sao ah?
 

File đính kèm

Lần chỉnh sửa cuối:
Bó Bi với anh Bí Bo này luôn:
Lúc thì : "Hợp đồng giữa Cty A và nhà thầu của Cty B" . Lúc lại: "HĐ giữa Cty A va nhà thầu của Cty B"
Dữ liệu như thế thì Thầy Pm phối hợp với Thầy ndu cũng phải "Bó Bi"
Thật ra đây là bài toán tách chuỗi, tùy theo dữ liệu mà giải quyết, nếu chủ topic không đưa được tất cả các kiểu dữ liệu thì không giải quyết triệt để được vấn đề
Mình nói nếu cấu trúc dữ liệu đúng như trong ví dụ thì công thức mình sẽ lấy Right từ "thằng" khoảng trắng thứ 3 tới hết mà không quan tâm các cái khác
Híc, "bó bi"
Thân
[TABLE="width: 216"]
Sao nó có cái bảng, ngộ zị
[TR]
[TD][/TD]
[/TR]
[/TABLE]
Hic, không chịu bó bi đâu bác Cò.
Em chỉ quan tâm đến chữ "của" hoặc chữ "giữa" đầu tiên, cắt phéng nó và các ký tự đằng trước đi, "HĐ" hay "Hợp đồng" gì cũng vậy thôi.
Còn các chữ "của" hay "giữa" thứ 2 trở đi, nếu có, vẫn giữ nguyên.
 
Hình như thằng Trim trong trường hợp này không có tác dụng hay sao thày ah. Khoảng trắng đằng trước nó không xóa được.

Em thắc mắc là nếu số ký tự của họ sau từ giữa lớn hơn 255 thì sao ah?
Trong khi chưa tìm ra nguyên nhân hàm Trim trong công thức của thày ndu em dùng cái này:
PHP:
RIGHT(A2,LEN(A2)-3-FIND("@",SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của","@")))
nó giải quyết được cả bài của bác bebo.
 
Lần chỉnh sửa cuối:
Trong khi chưa tìm ra nguyên nhân hàm Trim trong công thức của thày ndu em dùng cái này:
RIGHT(A2,LEN(A2)-3-FIND("@",SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của","@")))
nó giải quyết được cả bài của bác bebo.
Sửa thành vầy đi
PHP:
=SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của",REPT(" ",LEN(A2))),LEN(A2))),CHAR(160),"")
Xóa thằng CHAR(160) là hết liền
Còn nếu dùng FIND hoặc SEARCH thì buộc phải bẫy lỗi (trường hợp không có ký tự cần tìm)
 
Sửa thành vầy đi
PHP:
=SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(A2,"giữa","của"),"của",REPT(" ",LEN(A2))),LEN(A2))),CHAR(160),"")
Xóa thằng CHAR(160) là hết liền
Em chưa hiểu cái CHAR(160) tại sao lại phải đưa vào thì hết, phải chăng nó có dính dáng thì đến mã Font (do một số trường hợp TRIM không giải quyết được)? Xin thày chỉ bảo giùm cho ah.
 
Em chưa hiểu cái CHAR(160) tại sao lại phải đưa vào thì hết, phải chăng nó có dính dáng thì đến mã Font (do một số trường hợp TRIM không giải quyết được)? Xin thày chỉ bảo giùm cho ah.
Thật sự tôi chẳng biết nữa... Trong chuổi gốc không có ký tự này nhưng qua quá trình biến đổi, tự dưng nó sinh ra
Cái ký tự ấy gần giống khoảng trắng, chỉ khác là không có tác dụng với hàm TRIM như khoảng trắng bình thường
------------------------
Một điều lạ là với chuổi trên, nếu tôi tự tay gõ vào 1 file trắng thì hoàn toàn không bị gì cả
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Ah... tôi biết nguyên nhân ở đâu rồi. Nó nằm trong công thức chứ không phải trong chuổi.
Rất có thể công thức này không phải bạn tự gõ mà copy ở đâu đó, vô tình "mang theo" luôn ký tự char(160)
Giờ sửa lại thế này nhé
- Lồng hàm TRIM vào
- Xóa đoạn REPT(" ",255) rồi tự gõ lại bằng tay
Xem video clip minh họa đây:

[video=youtube;H3CVeDygX7U]http://www.youtube.com/watch?v=H3CVeDygX7U[/video]
 
Lần chỉnh sửa cuối:
ô a1 của em có nội dung là cộng hòa xã hội chủ nghĩa việt nam, bây giờ em phải dùng hàm gì để đếm số ký tự c có trong câu đó ah? (tất nhiên kết quả là 2). Em xin cảm ơn
Công thức này thử xem được không ?
Mã:
=sumproduct(len(a1)-len(substitute(lower(a1),a4,"")))
 
Tôi sử dụng công thức của thày Concogia để đến số ký tự c trong câu cộng hòa xã hội chủ nghĩa Việt Nam kết quả lại ra 1 nhỉ?

PHP:
 =SUM(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="c",1,0))

Tôi cứ thắc mắc nó là mảng tại sao lại dùng hàm sum nhỉ?
 
Tôi sử dụng công thức của thày Concogia để đến số ký tự c trong câu cộng hòa xã hội chủ nghĩa Việt Nam kết quả lại ra 1 nhỉ?

PHP:
 =SUM(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="c",1,0))
Gõ xong phải Ctrl + Shift + Enter bạn à (mảng mà)
Tôi cứ thắc mắc nó là mảng tại sao lại dùng hàm sum nhỉ?
Sao không SUM được chứ! Ví dụ =SUM({1,2,3}) ---> Tổng của mảng {1,2,3} cho kết quả = 6
---------------
Nói thêm: Cách dùng mảng như công thức trên sẽ cho tốc độ rất chậm
Tôi thì dùng cái này =LEN(A1)-LEN(SUBSTITUTE(A1,"c",""))
Ngon hơn và nhanh hơn rất nhiều
 
Buổi sáng nay tìm những bài của thày liên quan đến hàm substitute em đã vận dụng được tương đối,

Trong thực tế em sẽ sử dụng công thức nào ngắn, dễ nhất, tuy vậy em cũng rất muốn hiểu về các cách có thể để giải bài, trên cơ sở đó có điều kiện so sánh cũng tốt thày ah?

Em cũng băn khoăn thay vì ấn Ctrl + Shift + Enter thì mình có thể dùng Sumproduct để đỡ phải gõ không ah? Em có lồng vào nhưng không được thày ah.

----------
Nhờ có thày mà em cảm thấy bản thân tiến bộ trông thấy, tuy lượng kiến thức hiện tại của em chưa được bao nhiêu nhưng nó là nền tảng rất quan trọng ban đầu đối với em.

Em cố gắng nghiên cứu thêm, hiểu và áp dụng phần công thức excel, sau đó cùng với VBA em sẽ cố gắng kết hợp giải các bài toán theo 2 cách, để lựa chọn ra cách nào phù hợp đối với công việc thực tế.

Xin cảm ơn thày rất nhiều.
 
Lần chỉnh sửa cuối:
Em cũng băn khoăn thay vì ấn Ctrl + Shift + Enter thì mình có thể dùng Sumproduct để đỡ phải gõ không ah? Em có lồng vào nhưng không được thày ah.
Cũng tùy! Có 1 vài công thức dù thay SUM bằng SUMPRODUCT cũng vẫn phải nhấn Ctrl + Shift + Enter mới ra kết quả
(không biết nữa nhưng ta cứ thí nghiệm... không được cái này thì làm tiếp cái kia thôi)
tuy lượng kiến thức hiện tại của em chưa được bao nhiêu nhưng nó là nền tảng rất quan trọng ban đầu đối với em.
Em cố gắng nghiên cứu thêm, hiểu và áp dụng phần công thức excel, sau đó cùng với VBA em sẽ cố gắng kết hợp giải các bài toán theo 2 cách, để lựa chọn ra cách nào phù hợp đối với công việc thực tế.
Xin cảm ơn thày rất nhiều.
Cứ từ từ thôi, đừng nóng vội vì bí ẩn trên Excel còn nhiều lắm
Tốc độ tiếp thu của bạn như thế là nhanh lắm rồi (ngày xưa tôi chậm tiêu hơn nhiều)
Tôi thấy bạn cũng rất chịu khó, hết làm bằng VBA rồi lại chuyển sang dùng công thức.. chẳng mấy chốc bạn sẽ là NGÔI SAO MỚI trên GPE cho mà coi
Chúc thành công nhé!
Ẹc... Ẹc...
 

Bài viết mới nhất

Back
Top Bottom