Kiểm tra trạng thái mặt biển đúng hay sai

Liên hệ QC

phulien1902

GPE - My love
Tham gia
6/7/13
Bài viết
3,543
Được thích
4,424
Xin chào tất cả các ACE trên diễn đàn.
Mình có bài toán này nhờ mọi người nghiên cứu giúp, đó là xác định trạng thái mặt biển đúng sai.
Để xác định trạng thái mặt biển ta căn cứ vào hướng gió thổi, ví dụ khi gió thổi 1 hướng nào đó(chẳng hạn hướng N( hướng Bắc) thì hướng trạng thái mặt biển sẽ lấy hướng gió đó làm trung tâm và dịch chuyển lên trên hay xuống dưới 1 góc nhỏ hơn hoặc bằng 45 độ, thì được xác định là đúng, vượt quá 45 độ là sai.
Trạng thái mặt biển nhập vào cột B, kết quả cột C
Xin mời mọi người xem file
Ghi chú: Khoảng cách 2 góc liền kề là 22 độ 5( 1/4 góc vuông)
Xin trân trọng cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các ACE trên diễn đàn
Đã 10 ngày qua mà chưa có câu trả lời cho bài toán "Kiểm tra trạng thái mặt biển đúng hay sai".
Vậy cho tôi xin phép được hỏi mọi người là bài toán trên có vấn đề gì chưa rõ hoặc không thể giải quyết được?
Mong nhận được sự chia sẻ của mọi người. Xin cảm ơn.
 
Chào các ACE trên diễn đàn
Đã 10 ngày qua mà chưa có câu trả lời cho bài toán "Kiểm tra trạng thái mặt biển đúng hay sai".
Vậy cho tôi xin phép được hỏi mọi người là bài toán trên có vấn đề gì chưa rõ hoặc không thể giải quyết được?
Mong nhận được sự chia sẻ của mọi người. Xin cảm ơn.

Tôi nghĩ nếu dùng công thức Excel thì rách việc quá. Tôi không thử nên không phán có được hay không, có phải dùng gì đó, vd. bảng tra, hay không. Tóm lại là tôi không có ý kiến. Cũng có thể dễ nhưng tôi không thử nên không có ý kiến.

Nếu dùng hàm tự tạo hoặc Worksheet_Change thì lại dễ.
 
Lần chỉnh sửa cuối:
Vậy là đã có hướng giải quyết, em phiền bác dùng hàm tự tạo giúp em, vì em cung đang chập chững với VBA, cũng có thêm cơ hội để học hỏi.
Em xin cảm ơn bác trước.
 
Chào các ACE trên diễn đàn
Đã 10 ngày qua mà chưa có câu trả lời cho bài toán "Kiểm tra trạng thái mặt biển đúng hay sai".
Vậy cho tôi xin phép được hỏi mọi người là bài toán trên có vấn đề gì chưa rõ hoặc không thể giải quyết được?
Mong nhận được sự chia sẻ của mọi người. Xin cảm ơn.

Em chỉ biết cách làm bảng phụ rùi dò tìm theo bảng phụ.
Còn hơn nữa chắc chờ các bạn khác. /-*+/
 

File đính kèm

Rất là cảm ơn bạn, kết quả quá OK.
 
Rất là cảm ơn bạn, kết quả quá OK.

Trời ơi, trong bài #1 ở ô B2 bạn có "NW,NNW,N,NNE,NE" nên tôi cứ tưởng là ô có thể có nhiều "thành phần" được ghép bởi ",". Và "Sai" khi trong chuỗi có 1 thành phần sai.
Bạn nghĩ thế nào mà lại nhập vào B2 chuỗi "NW,NNW,N,NNE,NE" để gây hiểu nhầm???

Còn nếu mỗi ô chỉ có 1 thành phần thuộc tập

{N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,NNW}

thì bài toán lại quá tầm thường.

Chả cần bảng tra gì cả.

Công thức cho C2
Mã:
=IF(AND(ABS(MATCH(UPPER($B$2);$A$2:$A$17;0)-ROW()+1)>2;ABS(MATCH(UPPER($B$2);$A$2:$A$17;0)-ROW())<13);"Sai";"Dung")

Kéo xuống dưới.

Hoặc đặt thêm Name cho gọn công thức

Viết vội nên có thể sai.
 
Lần chỉnh sửa cuối:
Trời ơi, trong bài #1 ở ô B2 bạn có "NW,NNW,N,NNE,NE" nên tôi cứ tưởng là ô có thể có nhiều "thành phần" được ghép bởi ",". Và "Sai" khi trong chuỗi có 1 thành phần sai.
Bạn nghĩ thế nào mà lại nhập vào B2 chuỗi "NW,NNW,N,NNE,NE" để gây hiểu nhầm???
Thực tế thì ở ô B2 có 2 đến 3 hướng bác siwtom ah, vì vậy khi em kiểm soát lỗi bằng tay rất mất thời gian. Nay có cách giải quyết của zztantaibazz là quý rồi,mặc dù chưa hoàn thiện khi ô B2 có 2-3 hướng. Nếu như các bác viết Code để hoàn thiện bài toán tổng quát thì còn gì bằng. Riêng về công thức trên của bác khi em thử chưa cho kết quả.
Cảm ơn bác.
 
Thực tế thì ở ô B2 có 2 đến 3 hướng bác siwtom ah, vì vậy khi em kiểm soát lỗi bằng tay rất mất thời gian. Nay có cách giải quyết của zztantaibazz là quý rồi,mặc dù chưa hoàn thiện khi ô B2 có 2-3 hướng. Nếu như các bác viết Code để hoàn thiện bài toán tổng quát thì còn gì bằng. Riêng về công thức trên của bác khi em thử chưa cho kết quả.
Cảm ơn bác.

1. Tập tin đính kèm. Nếu bạn cho là "chưa cho kết quả" thì bạn hãy nói rõ "chưa cho kết quả" có nghĩa là gì. Bởi chỉ nói "chưa cho kết quả" thì đối phương chịu không biết phản biện như thế nào.

Cột C dùng Name, cột D không dùng Name

2. Nếu cần viết code cho dữ liệu có dạng"a,b,c,...,z" mà a, b, c, ..., z là những phần tử thuộc tập

{N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,N NW}

thì bạn phải định nghĩa khái niệm "thế nào là dữ liệu Đúng". Vì phải có 1 cái thước để đo, một mẫu để so sánh chứ. Chứ không thì căn cứ vào đâu để kết luận? Với 1 phần tử thì dễ rồi vì bạn đã miêu tả nhưng vài phần tử thì sao?

Tôi thử định nghĩa: Mỗi ô dữ liệu có dạng "a,b,c,...,z", tức phân cách bởi dấu phẩy - có thể có dấu cách tùy ý trước và sau dấu phẩy, mà a, b, c, ..., z là những phần tử thuộc tập ở trên. Số lượng các phần tử trong chuỗi có thể tùy ý (1 mà cũng có thể 100). Chuỗi được gọi là "Đúng" khi và chỉ khi mỗi phần tử là "Đúng".

vd. theo khái niệm trên thì với gió là "N" thì chuỗi Trạng thái mặt biển "NW,NNW,N,NNE,NE,NW,NNW,N,N,N,N,N,N,NNE,NE" là "Đúng" nhưng cũng với gió = "N" thì chuỗi Trạng thái mặt biển "NW,NNW,E" là "sai"

Còn bạn định nghĩa thế nào?
 

File đính kèm

Em thành thực xin lỗi bác siwtom khi thay công thức của bác vào Cell B2 khi có nhiều hướng, vì em đã không đọc ký câu bác nói là môi ô chỉ có 1 phần tử. Kết luận là kết quả rất tốt, không cần bảng phụ. Vậy là em có 2 cách để giải quyết bài toán.
Xin cảm ơn bác rất nhiều.
 
Web KT

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

Back
Top Bottom