Hỏi cách tách mỗi chữ trong text thành 1 ô

  • Thread starter Thread starter linhvsb
  • Ngày gửi Ngày gửi
Liên hệ QC

linhvsb

Thành viên mới
Tham gia
29/1/09
Bài viết
17
Được thích
2
Em muốn tạo một macro sao cho khi nhập các chữ vào cột text hoặc paste 1 đoạn text nào đó vào excel thì nó sẽ tự động nhập các từ vào từng ô ở cột A. Những từ đã nhập không trùng nhau.
các anh chị xem thêm file đính kèm ạ.
 

File đính kèm

  • VD.JPG
    VD.JPG
    20 KB · Đọc: 58
Tôi thấy trong trường hợp cần tránh trùng từ đã nhập, không phân biệt chữ hoa, chữ thường, loại bỏ các ký tự không cần thiết thì trước khi chuyển chuỗi thành mảng ta nên chuẩn hóa chuỗi ban đầu trước. Ví dụ:
- Loại bỏ các khoảng trống thừa, các ký tự không cần thiết của chuỗi (Str):
PHP:
    Str = Trim(Replace(Str,"  "," "))
    Str = Replace(Replace(Replace(Replace(Replace(Str,". ", " "),", "," "),"!"," "),"? ", " "),"! ", " ")
- Loại bỏ các từ trùng nhau:
Trước tiên ta chuyển chuỗi gốc thành 1 mảng A1(), sau đó lưu lại thành 1 chuỗi so sánh Str1 rồi mới chuyển thành mảng chính để chèn
PHP:
    For I = LBound(A1) To UBound(A1) 
        If Instr(Ucase(Str1), Ucase(A1(i))) = 0 then Str1 = Str1 & " " & A1(I)
    Next
    A1() = Split(Str1, " ")
 
Upvote 0
Thứ nhất, cái không phân biệt chữ hoa chữ thường thì được. Nhưng bạn chọn chữ nào?
có thể em sẽ gặp cả bảng chữ cái ấy chứ //////
trường hợp nữa là ví dụ hàng của em có CD, và VCD thì em muốn chèn đoạn code sao cho
1 từ có 2 chữ in hoa trở lên thì nó sẽ lọc sang cột khác hoặc sheet khác để xử lí tiếp vì em muốn viết rõ những chữ viết tắt này ra.
 
Upvote 0
Có 2 chữ in hoa trở lên: Liên tiếp hay không liên tiếp?
Dù sao thì cũng tìm được.
Với mỗi phần tử của mảng A1 nói ở bài trước, ta duyệt từng ký tự của phần tử đó
PHP:
Dim Dem as integer
For J = 1 to Len(A1(I))
   If Mid(A1(i),J,1)= Ucase(A1(i)) then Dem = Dem +1
Next
Đoạn mã này áp dụng chung cho liên tiếp và rời rạc và chưa loại bỏ các ký tự đặc biệt như các dấu .,?":
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom