Hàm tự tạo trả về kết quả khác nhau của cùng một nội dung

Liên hệ QC

chibi

Thành viên tích cực
Thành viên danh dự
Tham gia
10/1/07
Bài viết
1,120
Được thích
622
Chào anh chị em trên diễn đàn.
Có một hàm tự tạo nó trả về kết quả khác nhau nhờ mọi người xem giúp.
- Có 2 nguồn dữ liệu (danh sách họ và tên) được nhập ở 2 máy khác nhau, có cùng font chữ, sử dụng cùng bảng mã và kiểu gõ;
- Xây dựng một hàm để chuyển họ tên thành cái khác;
- 2 họ tên bằng nhau nhưng cái hàm ở trên lại trả về 2 kết quả khác nhau.
Cụ thể trong file đính kèm, mong anh chị em trên diễn đàn xem giúp.
Chúc mọi người vui vẻ.
 

File đính kèm

  • doichieu.xls
    39.5 KB · Đọc: 13
Tôi thấy giá trị 2 cột A và C khác nhau mà. Bạn dùng hàm LEN(A2) và LEN(C2) so sách xem thử.
 
Chào anh chị em trên diễn đàn.
Có một hàm tự tạo nó trả về kết quả khác nhau nhờ mọi người xem giúp.
- Có 2 nguồn dữ liệu (danh sách họ và tên) được nhập ở 2 máy khác nhau, có cùng font chữ, sử dụng cùng bảng mã và kiểu gõ;
- Xây dựng một hàm để chuyển họ tên thành cái khác;
- 2 họ tên bằng nhau nhưng cái hàm ở trên lại trả về 2 kết quả khác nhau.
Cụ thể trong file đính kèm, mong anh chị em trên diễn đàn xem giúp.
Chúc mọi người vui vẻ.

Chuổi từ máy 1 là Unicode tổ hợp
Chuổi từ máy 2 là Unicode dựng sẵn
Hai chuổi khác nhau hoàn toàn
thế thôi
 
Cảm ơn nhiều.
Chuyển về cùng một thứ thì kiếm ở đâu nhỉ?
 
Cảm ơn nhiều.
Chuyển về cùng một thứ thì kiếm ở đâu nhỉ?

Việc so sánh chuỗi tiếng Việt (tiếng nước khác có dấu?) trên sheet rất mạo hiểm.
Bạn nhìn vào công thức cho E2 thì thấy là A2 = C2 (E2 = TRUE).
Nhưng chúng không thể bằng nhau được vì ndu đã nói: trong A2 bạn có unicode tổ hợp, còn trong C2 là unicode dựng sẵn.
Tôi đã làm 1 Button1 để bạn thấy.

View attachment 89720

Trong hình đính kèm bạn thấy là A2 có 21 ký tự, C2 có 19 ký tự và chúng khác nhau (nhìn kết quả bên phải và dưới màn hình)
Khác nhau 2 ký tự vì:
- "à" trong A2 là gồm 2 ký tự: ký tự "a" và ký tự dấu huyền - ChrW(&H61) & ChrW(&H300) = "à"
- "à" trong C2 là 1 ký tự "à" - ChrW(&HE0) = "à"
- "ị" trong A2 gồm 2 ký tự: ký tự "i" và ký tự dấu nặng - ChrW(&H69) & ChrW(&H323) = "ị"
- "ị" trong C2 là 1 ký tự "ị": ChrW(&H1ECB) = "ị"
-----------------
Tôi đính kèm một module cho bạn vào tâp tin. Trong module có hàm SourceToDest. Ví dụ:
SourceToDest(text, 1, 1) --> chuyển văn bản UNICODE (unicode do thông số "nguồn" là thông số thứ 2 bằng 1) trong text sang UNICODE (unicode do thông số "đích" là thông số thứ ba bằng 1)
UNICODE nguồn là gì không quan trọng nhưng unicode đích do hàm trả về luôn là dựng sẵn.

Do hàm tôi viết để dùng trong add-in nên nếu không dùng add-in thì dùng công thức trên sheet cũng được. Chỉ có điều công thức để làm gì? Bạn chỉ cần văn bản thôi nên ta làm như sau ...

Tôi cố tình để bạn tự thao tác thì mới biết cách cho những lần sau:
1. Tại ô trống G2 bạn nhập công thức: =SourceToDest(A2;1;1)
2. Kéo xuống tới dòng cuối là dòng G25
3. Chuột phải trên vùng đang được chọn ở cột G và chọn COPY
4. Chuột phải lên A2 và chọn "Paste Special" --> chọn "Values" --> OK
5. Xóa cột G.
 

File đính kèm

  • doichieu.rar
    35.9 KB · Đọc: 32
Lần chỉnh sửa cuối:
Cảm ơn siwtom. (Thức khuya thế)
Về nguyên nhân thì ndu đã chỉ rõ.
Chưa đọc kỹ code, nhưng SourceToDest của bạn ban đầu đã đáp ứng được việc chuyển về cùng một thứ.
 
Web KT
Back
Top Bottom