Công thức với kí tự Full size (2 byte)

Liên hệ QC

o0o

Thành viên mới
Tham gia
6/12/07
Bài viết
21
Được thích
5
Hi các bạn,

Mình sử dụng condition formatting vói table có rất nhiều kí tự full size tiếng Nhật (2 byte). Do đó, số byte và số ký tự có sự sai khác.
Ví dụ:
cell A1= "ABC日本01日本234"
cell A2= "ABCDEFG123456789"

Kí tự cần kiểm tra là kí tự được bôi đỏ ở trên.

Tất cả các cell $A1 đều có 16 byte.
Tuy nhiên số ký tự lại khác nhau.

Do vậy, công thức =IF(MID($A1,8,1)="1","ok","N/A") của mình đã bị phá sản.

Mong các bạn giúp đỡ.
 
Không có File và cũng không có Font nên cũng khó Test.
Bạn thử kết hợp thêm hàm IF và LEN xem sao. Ví dụ :
=IF(LEN(A1)<10,IF(MID($A1,8,1)="1","ok","N/A")
,MID(.......))

TDN
 
Hi các bạn,

Mình sử dụng condition formatting vói table có rất nhiều kí tự full size tiếng Nhật (2 byte). Do đó, số byte và số ký tự có sự sai khác.
Ví dụ:
cell A1= "ABC日本01日本234"
cell A2= "ABCDEFG123456789"

Kí tự cần kiểm tra là kí tự được bôi đỏ ở trên.

Tất cả các cell $A1 đều có 16 byte.
Tuy nhiên số ký tự lại khác nhau.

Do vậy, công thức =IF(MID($A1,8,1)="1","ok","N/A") của mình đã bị phá sản.

Mong các bạn giúp đỡ.

Nếu một ký tự nhật (2byte) thì công thức (MID(A1,8,1) của bạn cũng không ra được --> vì trước nó có 2 chữ nhật?
Mình chưa hiểu mục đich công việc này của bạn, bạn có thể nói rõ hơn không? nếu mình hiểu rõ mục đích thì có thể có một giải pháp khác
 
Như bạn ST-Lu! nói, bạn cần nói rõ mục đích của việc này thì mới có hướng giải quyết tốt nhất. Ví dụ: Tại sao không dùng hàm FIND(), SEARCH() mà lại dùng MID(), .v.v..
 
Cám ơn các bạn rất nhiều.
(Xin lỗi vì mình bị chặn upload file)

Mình xin nói rõ hơn như sau:
Mình có các cell $A1 đều có length là 280 byte. (nếu là kí tự latinh hết thì có 180 kí tự).
Mình cần đặt một condition formatting là =IF(MID($A1,176,13)="UNITED STATES" thì bôi màu đỏ.

Công thức trên sẽ bị sai nếu 175 byte đầu có kí tự 2 byte.

note: Trong mỗi cell có thể có nhiều kí tự 2 byte (anywhere), có thể có nhiều chuỗi "UNITED STATES" (anywhere).
 
Vậy thì cần gì phải quan tâm đế 1 byte, 2 byte, len() với mid với position. Chỉ cần dùng Find cho Conditional formating:

=FIND("UNITED STATES";A7;1)>0
 
Cám ơn các bạn rất nhiều.
(Xin lỗi vì mình bị chặn upload file)

Mình xin nói rõ hơn như sau:
Mình có các cell $A1 đều có length là 280 byte. (nếu là kí tự latinh hết thì có 180 kí tự).
Mình cần đặt một condition formatting là =IF(MID($A1,176,13)="UNITED STATES" thì bôi màu đỏ.

Công thức trên sẽ bị sai nếu 175 byte đầu có kí tự 2 byte.

note: Trong mỗi cell có thể có nhiều kí tự 2 byte (anywhere), có thể có nhiều chuỗi "UNITED STATES" (anywhere).

Mình xin hỏi bạn một câu thôi, làm thế nào bạn biết cell nào cũng có length là 280 byte
Trong khi đó MID lại lấy vị trí của ký tự???.
Cell nào cũng có length 280 byte, nhưng sao cell la tinh lại là 180 ký tự
MÌnh thấy nó ko đồng nhất
và byte lại được hiểu như sau
Trong đại đa số các máy tính hiện đại, byte có 8 bit (octet). Tuy nhiên, không phải máy nào đều cũng dùng byte có 8 bit. Một số máy tính đời cũ đã dùng 6, 7, hay 9 bit trong một byte - một thí dụ là trong cấu trúc 36 bit của bộ máy PDP-10. Một ví dụ khác là đơn vị slab của bộ máy NCR-315. Một byte luôn luôn không chia rời được, nó là đơn vị nhỏ nhất có thể truy nhập được. Một byte 8 bit có thể lưu trữ được 256 giá trị khác nhau (28 = 256) -- đủ để lưu trữ một số nguyên không dấu từ 0 đến 255, hay một số có dấu từ -128 đến 127, hay một ký tự dùng mã 7 bit (như ASCII) hay 8 bit.
 
Lần chỉnh sửa cuối:
Vậy thì cần gì phải quan tâm đế 1 byte, 2 byte, len() với mid với position. Chỉ cần dùng Find cho Conditional formating:

=FIND("UNITED STATES";A7;1)>0
Không được rồi, ở đây tác giả đang muốn kiểm tra chữ UNITED STATES tại vị trí thứ 176. Và còn cái này nữa
có thể có nhiều chuỗi "UNITED STATES" (anywhere).
 
Cám ơn bạn st_LU, đúng là length của cell la 280 byte (do tool sinh ra, không sai được).
Nếu là kí tự latinh hết thì là 280 kí tự (xin lỗi bạn st_LU nhé)


Bạn rollover79 nói đúng ý mình rồi đấy. Ví số lượng xâu "UNITED STATES" là any, vị trí anywhere. Mình chỉ quan tâm đến xâu "UNITED STATES" có ở vị trí byte thứ 176 hay không thôi.
 
Không được rồi, ở đây tác giả đang muốn kiểm tra chữ UNITED STATES tại vị trí thứ 176
Nguyên văn của tác giả là:
Mình cần đặt một condition formatting là =IF(MID($A1,176,13)="UNITED STATES" thì bôi màu đỏ.
Trong mỗi cell có thể có nhiều kí tự 2 byte (anywhere), có thể có nhiều chuỗi "UNITED STATES" (anywhere).
Câu này theo tôi chưa rõ ràng lắm, có thể nhiều người sẽ hiểu như RollOver.

Nhưng tôi thấy khác, tác giả có thể chưa có cái nhìn tổng quát. Tác giả đã áp dụng Mid() ở chỗ khác thành công, nhưng áp dụng vào đây thì bị sai. Rất có thể chỉ cần công thức như tôi làm là đủ.
Nếu tác giả nói rõ hơn, thí dụ nói như sau:
Tôi cần tô màu các ô có chứa chuỗi "UNITED STATES", từ vị trí thứ 150 trở đi.
(hoặc từ vị trí 88 = 176/2 trở đi).

thì chỉ cần sửa cái tham số 1 thành con số đó trong hàm find nói trên.
 
File của bạn đây! Các cao thủ tham khảo nhé
 

File đính kèm

  • 2BYTE.xls
    26 KB · Đọc: 19
Bạn rollover79 nói đúng ý mình rồi đấy. Ví số lượng xâu "UNITED STATES" là any, vị trí anywhere. Mình chỉ quan tâm đến xâu "UNITED STATES" có ở vị trí byte thứ 176 hay không thôi.
Nghĩa là trong 1 ô có thể có một/nhiều chuỗi "UNITED STATES", nhưng chỉ tô màu những ô nào có chuỗi "UNITED STATES" bắt đầu/xuất hiện từ byte thứ 176 ??
Như vậy, bạn dùng thử công thức sau xem:
PHP:
=NOT(ISERROR(FIND("UNITED STATES",SUBSTITUTE($A1,MID($A1,1,175),""),1)))
 
Lần chỉnh sửa cuối:
Nghĩa là trong 1 ô có thể có một/nhiều chuỗi "UNITED STATES", nhưng chỉ tô màu những ô nào có chuỗi "UNITED STATES" bắt đầu/xuất hiện từ byte thứ 176 ??
Như vậy, bạn dùng thử công thức sau xem:
PHP:
=NOT(ISERROR(FIND("UNITED STATES",SUBSTITUTE($A1,MID($A1,1,175),""),1)))
Không phải vậy, nếu đơn giản thế thì bản thân hàm FIND cũng có tham số Start_Num rồi, đâu cần phải SUBSITUTE nữa. Vấn đề ở đây là các ký tự chữ tiếng Nhật mà.
 
Không phải vậy, nếu đơn giản thế thì bản thân hàm FIND cũng có tham số Start_Num rồi, đâu cần phải SUBSITUTE nữa. Vấn đề ở đây là các ký tự chữ tiếng Nhật mà.
Vậy rút cục, vấn đề là gì vậy! Thực sự mình không hiểu! bạn ấy đưa file lên nhưng không có kết quả yêu cầu kèm theo, đoán mò khổ quá!
 
Bạn ndu96081631 đã quên gửi kèm theo yêu cầu giúp mình rồi. -0-/.

Trong file attached ở trên, mình muốn bôi màu đỏ tất cả các ô có chữ "R" ở giữa dòng (vị trí xác định là byte thứ 99 của ô đấy).

Hiện tại mình đang dùng điều kiện tạm thời là:
=(MID($A1,99,1)="R" => bôi màu đỏ

Nhưng phải edit lại bằng tay những ô có chữ tiếng Nhật (2 byte) ở trước chữ "R".

Vì file rất dài, và rất nhiều file nên cần có công thức chính xác.
Rất cần sự giúp đỡ.
 
Xem file kèm theo. Nếu ngoài ký tự tiếng Nhật ra, toàn là tiếng Anh, không có tiếng Việt có dấu, hoặc tiếng miên, thì xài mới đúng.
 

File đính kèm

  • 2BYTECondition.xls
    33.5 KB · Đọc: 22
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom