Giúp code hoặc công thức đếm bao nhiêu chữ HOA và chữ thường

Liên hệ QC

hondacrv2019

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
19/5/19
Bài viết
116
Được thích
9
Ví dụ ô A1 có Text "ABCD 123 ef +-*/" thì có 4 chữ Hoa và 2 chữ thường ( không đếm số và các ký tự đặc biệt )
 
Một nhầm lẩn nho nhỏ, sai soát khi chưa loại bỏ cú pháp của Biểu thức chính quy.
đã sửa lỗi, Bác @batman1 xem lại.
Tôi thích cái Pattern của bạn. Và tôi nghĩ là code của bạn phục vụ mọi ký tự "đặc biệt".

Nếu ký tự "đặc biệt" chỉ là những ký tự "bình thường" trên bàn phím có mã >= 32 và <= 127 thì tôi đề nghị code sau. Bạn thử test xem.
Mã:
Function CountCharSpecial(ByVal Text As String, Optional ByVal thuong As Boolean = False) As Long
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "[\x20-\x40\x5B-\x60\x7B-\x7E]"
        Text = .Replace(Text, "")
        .Pattern = "[^" & IIf(thuong, UCase(Text), LCase(Text)) & "]"
        CountCharSpecial = .Execute(Text).Count
    End With
End Function

Text chứa các ký tự chữ và các ký tự trong "!"#$%&'()+-*/0123456789:;<=>?@[\]^{|}"
 
Upvote 0
Tôi thích cái Pattern của bạn. Và tôi nghĩ là code của bạn phục vụ mọi ký tự "đặc biệt".
Nếu ký tự "đặc biệt" chỉ là những ký tự "bình thường" trên bàn phím có mã >= 32 và <= 127 thì tôi đề nghị code sau. Bạn thử test xem.
Đúng là phải dùng kiểu pattern Unicode để loại ký tự dấu của Bác @batman1
Trong quá trình viết code để giúp chủ topic cho nhanh chóng, cũng bởi cái tính lười nên không xem bảng mã Unicode.
Cũng may sao là có giải thuật đúng đắng để giải quyết vấn đề.
 
Upvote 0
Nhân tiện có người hỏi hàm đếm chữ HOA và chữ thường, em xin hỏi các anh chị có thể viết được hàm tính tổng độ dài của chuỗi không (Không phải hàm Len mà là hàm tính độ dài (rộng) của chuỗi như kiểu độ rộng của cột trong excel)
 
Upvote 0
Nhân tiện có người hỏi hàm đếm chữ HOA và chữ thường, em xin hỏi các anh chị có thể viết được hàm tính tổng độ dài của chuỗi không (Không phải hàm Len mà là hàm tính độ dài (rộng) của chuỗi như kiểu độ rộng của cột trong excel)
Bạn cho cái ví dụ cụ thể xem nào.
 
Upvote 0
Bạn cho cái ví dụ cụ thể xem nào.
Ví dụ cái gì nữa. Người ta cần xem một chuỗi ký tự dài bao nhiêu đơn vị chiều dài đó.

Thứ nhất, mục đích oái ăm.
Thứ hai, quá phức tạp. Bởi nó (kích thước chiều dài) phụ thuộc quá nhiều thứ:
- Font type, font size, bảng mã. (Bạn đã từng thiết kế font chữ sẽ hiểu cái này).
- Kiểu format: trái/ phải/ giữa/ đều hai phía (nảy sinh khoảng cách giữa các ký tự biến động theo độ rộng cột và số lượng ký tự), củ chuối nhất là khi Shrink to fit. Tìm được cái tỉ lệ của nó cũng xong cuộc đời rồi.
 
Upvote 0
Ví dụ cái gì nữa. Người ta cần xem một chuỗi ký tự dài bao nhiêu đơn vị chiều dài đó.

Thứ nhất, mục đích oái ăm.
Thứ hai, quá phức tạp. Bởi nó (kích thước chiều dài) phụ thuộc quá nhiều thứ:
- Font type, font size, bảng mã
- Kiểu format: trái/ phải/ giữa/ đều hai phía (nảy sinh khoảng cách giữa các ký tự biến động theo độ rộng cột và số lượng tự ký), củ chuối nhất là khi Shrink to fit. Tìm được cái tỉ lệ của nó cũng xong cuộc đời rồi.
Thế em mới bảo bạn đó đưa ví dụ.
 
Upvote 0
Nhân tiện có người hỏi hàm đếm chữ HOA và chữ thường, em xin hỏi các anh chị có thể viết được hàm tính tổng độ dài của chuỗi không (Không phải hàm Len mà là hàm tính độ dài (rộng) của chuỗi như kiểu độ rộng của cột trong excel)

100% là viết được, vì Font nằm trong System, bạn có thể lấy thông tin từ file Font
chiều cao, chiều rộng, với ký tự và dấu. Tạo các hàm phân tích tỉ lệ dựa trên Pixel, và dựa vào các hàm WinApi để thực hiện.

Và trên Google đã có, nên không phải bỏ công sức để viết lại, bạn nên bỏ ít công sức để tìm kiếm.
 
Upvote 0
Mỗi ký tự trong một kiểu font được vẽ ở dạng vector (curve), không phải điểm ảnh.
Pixel phụ thuộc vào Zoom (10% - 400%), cái người ta cần là giá trị độ dài khi in ra giấy trắng mực đen ứng với tỉ lệ 1:1.
 
Upvote 0
Mỗi ký tự trong một kiểu font được vẽ ở dạng vector (curve), không phải điểm ảnh.
Ý người ta có thể nói về cái khác. Dù glyph thế nào thì cuối cùng cũng là in ra màn hình, lên giấy. Cái in ra đó nó có độ dài và độ cao trong bất cứ device context nào. Có thể người ta nói tới những API kiểu GetTextExtentPoint32 ̣(+ CreateFont, GetDeviceCaps ...).

Tôi không hiểu chủ thớt muốn gì *** nhưng tôi có thể thử đoán là HeSanbi đã hiểu như thế nào (có thể hiểu sai ý chủ thớt), và nói về giải pháp nào.

***: Với kiểu nói chung chung, không ví dụ, không nói về "bối cảnh" cụ thể, tức định dùng vào việc gì, thì thánh cũng không hiểu chứ nói gì tới batman1.
Chẳng hạn tôi muốn vẽ một hình chữ nhật 200 x 300 pixel trên màn hình. Tùy độ phân dải của màn hình mà nó to hay nhỏ - kích thước bằng mm là lớn hay nhỏ. Nhưng tính bằng pixel thì vẫn là 200 x 300. Bây giờ tôi muốn "in" một đoạn text "Ngày mai em đi. Biển nhớ tên em gọi về" bằng phông chữ Times New Roman kích thước 12 chữ thường (không đậm, nghiêng ...) và tôi muốn biết đoạn chữ đó dài bao nhiêu, có nằm trong khung hay không. Đấy là bối cảnh cụ thể. Và trong trường hợp này có thể tính được bằng cách dùng API.
 
Lần chỉnh sửa cuối:
Upvote 0
Ý người ta có thể nói về cái khác. Dù glyph thế nào thì cuối cùng cũng là in ra màn hình, lên giấy. Cái in ra đó nó có độ dài và độ cao trong bất cứ device context nào. Có thể người ta nói tới những API kiểu GetTextExtentPoint32 ̣(+ CreateFont, GetDeviceCaps ...).

Tôi không hiểu chủ thớt muốn gì *** nhưng tôi có thể thử đoán là HeSanbi đã hiểu như thế nào (có thể hiểu sai ý chủ thớt), và nói về giải pháp nào.

***: Với kiểu nói chung chung, không ví dụ, không nói về "bối cảnh" cụ thể, tức định dùng vào việc gì, thì thánh cũng không hiểu chứ nói gì tới batman1.
Chẳng hạn tôi muốn vẽ một hình chữ nhật 200 x 300 pixel trên màn hình. Tùy độ phân dải của màn hình mà nó to hay nhỏ - kích thước bằng mm là lớn hay nhỏ. Nhưng tính bằng pixel thì vẫn là 200 x 300. Bây giờ tôi muốn "in" một đoạn text "Ngày mai em đi. Biển nhớ tên em gọi về" bằng phông chữ Times New Roman kích thước 12 chữ thường (không đậm, nghiêng ...) và tôi muốn biết đoạn chữ đó dài bao nhiêu, có nằm trong khung hay không. Đấy là bối cảnh cụ thể. Và trong trường hợp này có thể tính được bằng cách dùng API.
Lúc đầu em tưởng khó làm nhưng sau khi bác HeSanbi gợi ý, em cũng đã tìm được 1 hàm trên Google.
Em thử ứng dụng hàm này như sau:
Giả sử các cột tư C->AA đang là Merge, nếu dùng hàm tính toán độ rộng và cao của chuỗi (ở file đính kèm) thì có thể biết được lúc nào nó cần dãn dòng và dãn bao nhiêu không ạ? Em chưa hiểu nên chưa quy đổi được đơn vị từ Pixel sang đơn vị cột trong excel. Test cho một số trường hợp thì nó không ra quy luật. Mong các anh chị giúp đỡ!
 

File đính kèm

  • Dieuchinhdorong.xlsm
    20.8 KB · Đọc: 6
Upvote 0
Tôi không hiểu chủ thớt muốn gì
Em hay nhớ thành viên trước kia đang hỏi vấn đề gì. Anh chàng kia vẫn loay hoay cái vụ chỉnh biên bản để in (dãn dòng/ cột).
---
Vụ đó có cách là tham chiếu vào một cell 'chuẩn' rồi tính chiều cao/rộng và dãn dòng/ cột cái mình muốn, và đã có bài làm rồi.
 
Upvote 0
Đúng là
Anh chàng kia vẫn loay hoay cái vụ chỉnh biên bản để in (dãn dòng/ cột)

Vụ đó có cách là tham chiếu vào một cell 'chuẩn' rồi tính chiều cao/rộng và dãn dòng/ cột cái mình muốn, và đã có bài làm rồi.
anh ạ.
Đó cũng là vì sao em không lập thêm topic mới để hỏi về vấn đề này nữa (sẽ loãng diễn đàn). Mà chỉ khi đọc topic này thấy có liên quan đến xử lý ký tự nên em mới hỏi "ké" mong các anh/chị giúp.
P/s: Vụ dãn dòng/ cột em vẫn đang làm theo hướng dẫn trước kia và ổn ạ, nhưng vẫn muốn tìm xem có cách không ? :p:p:p. Hơi tham lam anh nhỉ?
 
Upvote 0
Mỗi ký tự trong một kiểu font được vẽ ở dạng vector (curve), không phải điểm ảnh.
Pixel phụ thuộc vào Zoom (10% - 400%), cái người ta cần là giá trị độ dài khi in ra giấy trắng mực đen ứng với tỉ lệ 1:1.
Sao anh befaint đây đọc không hiểu đoạn:
"Tạo các hàm phân tích tỉ lệ dựa trên Pixel"
Nó có 2 từ "dựa trên", có nói font cao bao nhiêu Pixel thì "phản bát" có vẻ hợp lý.

Dựa trên Pixel ta còn dễ dàng tính thêm được cho Resolution của Card đồ họa, lúc đó ta có thể căn chỉnh hợp lý khi chuyển sang một Resolution khác.

Giống như File Excel từ card Full HD mở sang HQ hay HD / Ultra HD / QHD.
 
Lần chỉnh sửa cuối:
Upvote 0
Dựa trên Pixel ta còn dễ dàng tính thêm được cho Resolution của Card đồ họa, lúc đó ta có thể căn chỉnh hợp lý khi chuyển sang một Resolution khác.
Hiển thị trên màn hình là bao nhiêu không cần làm, cái thành viên kia cần là giá trị đó tương quan như nào với giá trị đo được ở bản in trên giấy.
Bạn xem bài #33 đó.
 
Upvote 0
Hiển thị trên màn hình là bao nhiêu không cần làm, cái thành viên kia cần là giá trị đó tương quan như nào với giá trị đo được ở bản in trên giấy.
Bạn xem bài #33 đó.
Hiển thị trên màn hình mà không cần thì có gì để bàn đâu "làm đại làm lụi"
Tương quan giữa màn hình và giấy in khác nhau rất nhiều.
Đa số người in, phải in hỏng đôi trăm tờ rồi qua lại màn hình tưởng tượng lại và chỉnh sửa.
thử làm Excel trên 1 trên Iphone 1 trên Galaxy Note, rồi mang đi in. "chắc là giống nhau"

Em chưa hiểu nên chưa quy đổi được đơn vị từ Pixel sang đơn vị cột trong excel
Đã hỏi Google mà không hỏi ổng luôn câu này.

Đơn vị trên Excel Tính là Points
1 pixels =0.75 points
points = pixels / 96 * 72
96 là đơn vị dpi mặc định trên window.
Tùy Resolution của Card đồ họa: Mà tỉ lệ này thay đổi.

Google "dpi" là gì xem sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Web KT
Back
Top Bottom