Cho em hỏi tại sao biểu thức logic lại cho giá trị False? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vkcuipap

Thành viên mới
Tham gia
17/4/10
Bài viết
5
Được thích
0
Ô A1 có dữ liệu ngày tháng là 05/01/2008. Nhập công thức =A1>"25/12/2007" lại cho ra giá trị false??? còn bỏ dấu nháy kép thì ra true.
ai có thể giúp e cách so sánh với ngày tháng. Ví dụ như trước ngày A và sau ngày B thì không tăng giá còn trong ngày A và B thì giá gấp rưỡi
Thanks ace nhiều
 
Ô A1 có dữ liệu ngày tháng là 05/01/2008. Nhập công thức =A1>"25/12/2007" lại cho ra giá trị false??? còn bỏ dấu nháy kép thì ra true.
ai có thể giúp e cách so sánh với ngày tháng. Ví dụ như trước ngày A và sau ngày B thì không tăng giá còn trong ngày A và B thì giá gấp rưỡi
Thanks ace nhiều

Muốn so sánh dạng ngày tháng thì bạn phải dùng công thức này:

=A1>DATEVALUE("25/12/2007")

Còn nếu A1 có giá trị: 05/01/2008

Và nếu B1 có giá trị: 25/12/2007

thì so sánh đơn giản chỉ là:

=A1>B1
 
Lần chỉnh sửa cuối:
=A1>"25/12/2007"

Là so sánh giá trị số (A1) và giá trị chuỗi, thì luôn luôn False

Bỏ dấu nháy ra:

=A1>25/12/2007

Tức là so sánh số (A1) với 25 chia 12 chia 2007 (bằng 0,001038033549), luôn luôn True

Do đó muốn so sánh với ngày A và ngày B, thì gõ ngày A và ngày B vào 2 ô nào đó và so sánh. Hoặc phải dùng hàm Date hoặc DateValue:

=A1>Date(2007,12,25)
==A1>DATEVALUE("2007/12/25")
 
Ô A1 có dữ liệu ngày tháng là 05/01/2008. Nhập công thức =A1>"25/12/2007" lại cho ra giá trị false??? còn bỏ dấu nháy kép thì ra true.
ai có thể giúp e cách so sánh với ngày tháng. Ví dụ như trước ngày A và sau ngày B thì không tăng giá còn trong ngày A và B thì giá gấp rưỡi
Thanks ace nhiều
- Trường hợp có dấu nháy kép: So sánh một số và một chuỗi thì số luôn nhỏ hơn chuỗi (nguyên nhân thì tôi cũng chưa hiểu lắm)
- Trường hợp không có dấu nháy kép: Excel sẽ thực hiện phép tính 25/12/2007 trước, được kết quả xấp xỉ 0.001038. Sau đó lấy giá trị tương ứng với ngày 05/01/2008 (là số 39452) so sánh với kết quả này. Rõ ràng trường hợp này True là đúng rồi.

Cách khắc phục: Bạn sửa lại thế này: =A1>DATE(2007,12,25)
 
Muốn so sánh dạng ngày tháng thì bạn phải dùng công thức này:

=A1>DATEVALUE("25/12/2007")
Công thức trên chỉ đúng nếu hệ thống đang set ngày dd/mm/yyyy. Nếu hệ thống định dạng mm/dd/yyyy thì bị lỗi #Value!

Do đó chuỗi trong hàm DateValue nên có dạng yyyy/mm/dd
 
Công thức trên chỉ đúng nếu hệ thống đang set ngày dd/mm/yyyy. Nếu hệ thống định dạng mm/dd/yyyy thì bị lỗi #Value!

Do đó chuỗi trong hàm DateValue nên có dạng yyyy/mm/dd

Máy em thử cả 2 trường hợp đều được! Chắc máy khôn!

------------------------

P/s: Không cần câu nệ cấu trúc, nếu mình đặt ngày tháng dạng nào mà cell nó hiểu là dạng ngày tháng, thì trong DATEVALUE đặt như thế đó là nó sẽ hiểu.
 
Lần chỉnh sửa cuối:
P/s: Không cần câu nệ cấu trúc, nếu mình đặt ngày tháng dạng nào mà cell nó hiểu là dạng ngày tháng, thì trong DATEVALUE đặt như thế đó là nó sẽ hiểu.
Lỡ mình đem file này qua máy khác dùng thì sao anh? Mình đâu đảm bảo được rằng máy người ta cũng thiết lập giống máy mình.
 
Lỡ mình đem file này qua máy khác dùng thì sao anh? Mình đâu đảm bảo được rằng máy người ta cũng thiết lập giống máy mình.

Anh lấy cấu trúc:

=DATEVALUE("2007/12/25")

và cấu trúc:

=DATEVALUE("25/12/2007")

Máy anh đều cho ra giá trị 39441, vậy thì sao? Đừng nói là may mắn à nha!

--------------------------------------------
P/s: Nhưng tốt nhất là dùng DATE với cấu trúc:
DATE(year, month, day) là chắc ăn nhất, bởi cấu trúc nó bất di bất dịch rồi, sai ráng chịu!
 
Lần chỉnh sửa cuối:
Anh lấy cấu trúc:

=DATEVALUE("2007/12/25")

và cấu trúc:

=DATEVALUE("25/12/2007")

Máy anh đều cho ra giá trị 39441, vậy thì sao? Đừng nói là may mắn à nha!

--------------------------------------------
P/s: Nhưng tốt nhất là dùng DATE với cấu trúc:
DATE(year, month, day) là chắc ăn nhất, bởi cấu trúc nó bất di bất dịch rồi, sai ráng chịu!
Đơn giản vì anh dùng trên cùng 1 máy. Anh đem công thức đó qua máy khác hoặc đơn giản anh thay đổi thiết lập trong Control Panel thành MM/dd/yyyy xem nào, cấu trúc thứ 2 sẽ "tèo" ngay à.
 
Anh lấy cấu trúc:

=DATEVALUE("2007/12/25")

và cấu trúc:

=DATEVALUE("25/12/2007")

Máy anh đều cho ra giá trị 39441, vậy thì sao? Đừng nói là may mắn à nha!

--------------------------------------------
P/s: Nhưng tốt nhất là dùng DATE với cấu trúc:
DATE(year, month, day) là chắc ăn nhất, bởi cấu trúc nó bất di bất dịch rồi, sai ráng chịu!

Trời ơi, tới giờ này mà Nghĩa còn hỏi câu này sao? Thử đổi Date Format trong Control Panel thành M/d/yyyy rồi thử lại xem ---> Chắc ăn là công thức của Nghĩa bị lỗi #VALUE! còn của sư phụ thì luôn luôn đúng
--------------------
Nói thêm: Cấu trúc DATEVALUE("2007/12/25") của sư phụ có thể viết đơn giản thế này cũng được: --"2007/12/25"
 
Máy em thử cả 2 trường hợp đều được! Chắc máy khôn!

------------------------

P/s: Không cần câu nệ cấu trúc, nếu mình đặt ngày tháng dạng nào mà cell nó hiểu là dạng ngày tháng, thì trong DATEVALUE đặt như thế đó là nó sẽ hiểu.

Vẫn phong cách cũ: Cứ cãi trước, tính sau. Cứ đưa công thức lên, ai áp dụng thấy sai thì "xì" thêm 1 câu.

Nếu chủ topic set Control Panel là mm/dd/yyyy, copy công thức vô, bị lỗi #Value!, phản hồi lại, lúc đó mới nói thêm:

"nếu mình đặt ngày tháng dạng nào mà cell nó hiểu là dạng ngày tháng, thì trong DATEVALUE đặt như thế đó là nó sẽ hiểu."

Và vẫn tính cách đó: không đọc kỹ, nên không test đúng cách người ta nói.

Mà mình viết rõ ràng và viết bằng tiếng Việt ấy chứ:

Công thức trên chỉ đúng nếu hệ thống đang set ngày dd/mm/yyyy. Nếu hệ thống định dạng mm/dd/yyyy thì bị lỗi #Value!
 
Lần chỉnh sửa cuối:
Trời ơi, tới giờ này mà Nghĩa còn hỏi câu này sao? Thử đổi Date Format trong Control Panel thành M/d/yyyy rồi thử lại xem ---> Chắc ăn là công thức của Nghĩa bị lỗi #VALUE! còn của sư phụ thì luôn luôn đúng
--------------------
Nói thêm: Cấu trúc DATEVALUE("2007/12/25") của sư phụ có thể viết đơn giản thế này cũng được: --"2007/12/25"
Theo em nghĩ thì khác, hệ thống thống kê ở VN dấu phân cách là dấu chấm (.) cho hàng ngàn, dấu phẩy (,) cho hàng thập phân, dù muốn dù không anh vẫn phải thực hiện đúng như thế.

Ngày tháng cũng vậy, ở VN xài dd/mm/yyyy, thì dùng như thế khỏi phải suy nghĩ nào là VN nào là quốc tế!

File của em mà triển khai cho ai dùng thì em luôn nói một câu "phải đọc kỹ hướng dẫn trước khi sử dụng", đâu lý nào không liên quan với nhau, không hệ thống với nhau, ai lại đưa file cho mà xài chứ!

Mặc dù kiểu nó là vậy, nhưng trong hệ thống của mình là như vậy thì mình áp dụng vậy thôi.

Thì cứ chuẩn của các Thầy cứ sử dụng đi, nhưng tác giả đưa ngày tháng năm dạng dd/mm/yyyy là biết máy của họ đã cài như vậy rồi, đảo qua, đảo lại đôi khi lại rối tung, vì thế, khi ta định dạng ở Control Panel máy ta thế nào thì cứ thế mà phát huy thôi, khỏi suy nghĩ cho mệt!
 
Theo em nghĩ thì khác, hệ thống thống kê ở VN dấu phân cách là dấu chấm (.) cho hàng ngàn, dấu phẩy (,) cho hàng thập phân, dù muốn dù không anh vẫn phải thực hiện đúng như thế.

Công ty tôi làm việc và rất nhiều công ty có dính dáng đến nước ngoài như quan hệ với khách hàng, nhà cung cấp (chẳng cần là công ty có chủ nước ngoài), quy định dấu phẩy hàng ngàn và dấu chấm thập phân. Quy định này không chỉ áp dụng cho Excel, mà cả word, nói chung tất cả văn bản in, scan, ... Quy định đó còn áp dụng cả khi viết Mail. Excel dùng dấu chấm hàng ngàn thì in ra có đúng quy định được không?

Quy định như thế thì "Dù muốn dù không cũng phải thực hiện đúng như thế" (sic)

Tất nhiên do thói quen gõ ngày trước tháng sau của người Việt, tôi cũng khuyến cáo nhân viên chỉnh sửa control panel thành dd/mm/yyyy, nhưng tôi buộc họ phải định dạng MMM-dd-yyyy để có Jan-25-2013 (hoặc định dạng tương đương, miễn sao trong định dạng có MMM)

Còn viết bài ở đây đâu phải chỉ viết cho 1 mình 1 người hỏi đọc?
 
Theo em nghĩ thì khác, hệ thống thống kê ở VN dấu phân cách là dấu chấm (.) cho hàng ngàn, dấu phẩy (,) cho hàng thập phân, dù muốn dù không anh vẫn phải thực hiện đúng như thế.

Ngày tháng cũng vậy, ở VN xài dd/mm/yyyy, thì dùng như thế khỏi phải suy nghĩ nào là VN nào là quốc tế!

File của em mà triển khai cho ai dùng thì em luôn nói một câu "phải đọc kỹ hướng dẫn trước khi sử dụng", đâu lý nào không liên quan với nhau, không hệ thống với nhau, ai lại đưa file cho mà xài chứ!

Mặc dù kiểu nó là vậy, nhưng trong hệ thống của mình là như vậy thì mình áp dụng vậy thôi.

Thì cứ chuẩn của các Thầy cứ sử dụng đi, nhưng tác giả đưa ngày tháng năm dạng dd/mm/yyyy là biết máy của họ đã cài như vậy rồi, đảo qua, đảo lại đôi khi lại rối tung, vì thế, khi ta định dạng ở Control Panel máy ta thế nào thì cứ thế mà phát huy thôi, khỏi suy nghĩ cho mệt!

Riêng ngày tháng và số thì bạn dùng thiết lập thế nào cũng được. Nhưng khi nhập dữ liệu thì phải nhập đúng như đã thiết lập trong CP. Sau đó thì thay đổi trong trong CP hoặc gửi cho đối tác mà không cần suy nghĩ gì thêm.
Bạn nên nhớ là Excel rất linh hoạt. Chp dù máy bạn sử dụng dấu thập phân gì chăng nữa nhưng nếu bạn nhập số mà dùng dấu ấy thì Excel sẽ ghi nhớ là "ở đó ở đó" là số. Khi tập tin được chuyển sang máy khác (đối tác) thì do đã "ghi lòng tạc dạ" là "ở đó ở đó" là số nên Excel sẽ tự chuyển về dấu thập phân có trên máy hiện hành. Vì thế nếu bạn nhập số và Excel đã biết đó là số thì đi máy nào nó cũng là số vì Excel sẽ tự chuyển.
Tương tự với Data. Nếu bạn nhập đúng chuẩn theo như thiết lập trong CP thì Excel sẽ biết và sẽ coi đó là Data. Thông tin này sẽ được "ghi lòng tạc dạ" trong tập tin. Từ lúc này trở đi bạn thay đổi trong trong CP thoải mái, hoặc gửi cho đối tác. Excel sẽ căn cứ vào thiết lập trong CP của máy hiện hành để chuyển cho đúng.
Excel bắt buộc phải linh hoạt như thế chứ không thì chuyển cho đối tác (máy khác, và thiết lập CP có thể khác) thì tập tin sai hết à?
Riêng về chuỗi thì nó luôn là chuỗi, Excel không chuyển gì ở đây.

1. Bạn có trong CP vd. dd/mm/yyyy, và bạn gõ vào A1 là 05/01/2008, vào B1 =A1>DATEVALUE("25/12/2007"). Rõ rằng bạn đã gõ theo đúng như thiết lập trong CP nên Excel sẽ biết và sẽ coi đó là ngày tháng, thông tin sẽ được ghi trong tập tin.
2. Bây giờ bạn đổi trong CP thành mm/dd/yyyy (thao tác tương tự như là gửi cho đối tác có thiết lập mm/dd/yyyy). Quay lại tập tin thì Excel đã tự chuyển thành 01/05/2008. Vì Excel đã ghi nhớ đó là ngày tháng. Nhưng công thức vẫn như cũ vì trong ngoặc là chuỗi. Rõ ràng dù Excel có muốn cũng không thể coi "25/12/2007" là ngày tháng được vì làm gì có tháng 25?

Bạn không thể nói là viết thế nào cũng được. Ngay cả bạn cũng nhiều khi dùng một ứng dụng nào đó của người khác, rất có thể là của người nước ngoài. Nếu họ cũng viết "vô tư" như bạn, tức dùng mm/dd/yyyy, vì ở nước họ "bắt buộc" phải thế, nếu thế thì khi bạn dùng đồ của người ta thì rách việc rồi.

Ngoài ra bạn làm cho Cty, cho dù công ty chỉ có đối tác VN nhưng bạn có dám chắc là Cty sẽ không bao giờ có đối tác nước ngoài? Lúc đó muốn gửi cho người ta một ứng dụng làm trong quá khứ thì bạn ngồi tìm và sửa à? Một tập tin, chục tập tin? Nếu bạn thôi việc rồi mà ai đó ngồi sửa cái bạn làm thì chắc chắn nó sẽ tìm bạn để xin tí tiết.

Ngoài ra nếu có dạng luôn đúng thì tại sao không dùng? Hay cố tình làm thế để trêu ngươi ai đó?
 
1. Bạn có trong CP vd. dd/mm/yyyy, và bạn gõ vào A1 là 05/01/2008, vào B1 =A1>DATEVALUE("25/12/2007"). Rõ rằng bạn đã gõ theo đúng như thiết lập trong CP nên Excel sẽ biết và sẽ coi đó là ngày tháng, thông tin sẽ được ghi trong tập tin.
2. Bây giờ bạn đổi trong CP thành mm/dd/yyyy (thao tác tương tự như là gửi cho đối tác có thiết lập mm/dd/yyyy). Quay lại tập tin thì Excel đã tự chuyển thành 01/05/2008. Vì Excel đã ghi nhớ đó là ngày tháng. Nhưng công thức vẫn như cũ vì trong ngoặc là chuỗi. Rõ ràng dù Excel có muốn cũng không thể coi "25/12/2007" là ngày tháng được vì làm gì có tháng 25?

Em không biết cách mà các Thầy làm như thế nào, riêng em khi so sánh với ngày tháng, em luôn luôn ghi ngày đó ra trên 1 ô để so sánh, dĩ nhiên nó vừa trực quan, vừa muốn định dạng kiểu "quái" nào cũng được!

Còn khi em gửi file cho ai đó, em có thói quen là họ cần cái gì gửi cái đó, không gửi cả file (đa phần họ muốn là cái báo cáo), khi em gửi đi, em thường copy/ paste value tất cả, chả có công thức gì hết chỉ là số với số mà thôi (giấu dốt đấy! bởi lỡ gửi cái báo cáo mà có công thức tùm lum mà nhằm những cao nhân như các Thầy vô tình đọc thấy họ cười vỡ mặt cho hehehe).
 
Em không biết cách mà các Thầy làm như thế nào, riêng em khi so sánh với ngày tháng, em luôn luôn ghi ngày đó ra trên 1 ô để so sánh, dĩ nhiên nó vừa trực quan, vừa muốn định dạng kiểu "quái" nào cũng được!

Còn khi em gửi file cho ai đó, em có thói quen là họ cần cái gì gửi cái đó, không gửi cả file (đa phần họ muốn là cái báo cáo), khi em gửi đi, em thường copy/ paste value tất cả, chả có công thức gì hết chỉ là số với số mà thôi (giấu dốt đấy! bởi lỡ gửi cái báo cáo mà có công thức tùm lum mà nhằm những cao nhân như các Thầy vô tình đọc thấy họ cười vỡ mặt cho hehehe).

Cãi gì kỳ cục thế không biết
Người ta đang nói đến công thức DATEVALUE của Nghĩa cơ mà ---> Trên máy Nghĩa nó đúng sẽ không chắc trên máy người khác đúng ---> Điều này khác hoàn toàn với 1 Value: Hể đúng trên 1 máy sẽ luôn đúng trên mọi máy
Tóm lại: Hình như Nghĩa đang nhầm giữa Value và Formula
Cái này đã nói hàng mấy trăm lần rồi, Nghĩa thừa biết ấy chứ
 
Cãi gì kỳ cục thế không biết
Người ta đang nói đến công thức DATEVALUE của Nghĩa cơ mà ---> Trên máy Nghĩa nó đúng sẽ không chắc trên máy người khác đúng ---> Điều này khác hoàn toàn với 1 Value: Hể đúng trên 1 máy sẽ luôn đúng trên mọi máy
Tóm lại: Hình như Nghĩa đang nhầm giữa Value và Formula
Cái này đã nói hàng mấy trăm lần rồi, Nghĩa thừa biết ấy chứ
Thầy vẫn không hiểu ý em à? Ở file của trên máy em làm, dù bằng cách nào đi chăng nữa, miễn sao kết quả đúng là OK. Các Thầy lại nói gửi cho người khác xem, OK, chỉ toàn là value thôi, tức một báo cáo toàn là giá trị và chả có công thức nào cả, thì làm sao mà có chuyện công thức ở máy này đúng, máy kia sai cho được???
 
Thầy vẫn không hiểu ý em à? Ở file của trên máy em làm, dù bằng cách nào đi chăng nữa, miễn sao kết quả đúng là OK. Các Thầy lại nói gửi cho người khác xem, OK, chỉ toàn là value thôi, tức một báo cáo toàn là giá trị và chả có công thức nào cả, thì làm sao mà có chuyện công thức ở máy này đúng, máy kia sai cho được???

Thì đúng rồi: Ở đây là ta đang làm trên máy khác chứ còn gì nữa? Tức là đang hướng dẫn người ta 1 công thức mà nó mới chỉ được test đúng trên máy ta thôi (chắc gì máy người khác đã đúng?)
Còn Nghĩa là cứ cho rằng: Tôi test thấy đúng trên máy tôi, thế là được rồi (sao mà được cơ chứ)
Mà cũng có ai đề cập đến việc Nghĩa gửi báo cáo gì đó cho người ta xem đâu nhỉ (càng nói càng xa)... người ta chỉ nói CÔNG THỨC DATEVALUE mà Nghĩa đang hướng dẫn cho người khác là sai trong 1 vài trường hợp, chỉ thế thôi
Mà thôi, không bàn nữa ---> Mệt óc quá
 
Lần chỉnh sửa cuối:
Thì đúng rồi: Ở đây là ta đang làm trên máy khác chứ còn gì nữa? Tức là đang hướng dẫn người ta 1 công thức mà nó mới chỉ được test đúng trên máy ta thôi (chắc gì máy người khác đã đúng?)
Em thấy rằng khi người ta đưa lên một giải pháp, có thể là đúng, có thể là chưa đúng, chưa đúng thì dễ thấy các Thầy bắt bẻ, cũng đúng thôi, nhưng ngay từ đầu trả lời, để cho người khác nắm toàn bộ thì các Thầy đã cho người ta biết cấu trúc của hàm đó chưa?

Chẳng hạn:

=A1>"25/12/2007"

Là so sánh giá trị số (A1) và giá trị chuỗi, thì luôn luôn False

Bỏ dấu nháy ra:

=A1>25/12/2007

Tức là so sánh số (A1) với 25 chia 12 chia 2007 (bằng 0,001038033549), luôn luôn True

Do đó muốn so sánh với ngày A và ngày B, thì gõ ngày A và ngày B vào 2 ô nào đó và so sánh. Hoặc phải dùng hàm Date hoặc DateValue:

=A1>Date(2007,12,25)
==A1>DATEVALUE("2007/12/25")

Lẽ ra khi đã đề cập đến tính chuẩn thì các Thầy ngay từ đầu hướng dẫn luôn cho người ta đi, như với hàm DATEVALUE thì đối số ở trong ngày tháng chứa trong dạng chuỗi (date_text) và cái date_text này "NÊN" (chứ không phải luôn luôn) ở dạng "y/m/d". Tuy nhiên, ở mỗi máy có mỗi định dạng khác nhau, bạn cũng có thể định dạng như hệ thống máy bạn đã cài đặt.

Ngay cả trong Help của Excel cũng không nói rõ vấn đề CẤU TRÚC:

This article describes the formula syntax and usage of the DATEVALUE function (function: A prewritten formula that takes a value or values, performs an operation, and returns a value or values. Use functions to simplify and shorten formulas on a worksheet, especially those that perform lengthy or complex calculations.) in Microsoft Excel.Description

The DATEVALUE function converts a date that is stored as text to a serial number that Excel recognizes as a date. For example, the formula =DATEVALUE("1/1/2008") returns 39448, the serial number of the date 1/1/2008.
Note The serial number returned by the DATEVALUE function can vary from the preceding example, depending on your computer's system date settings.
The DATEVALUE function is helpful in cases where a worksheet contains dates in a text format that you want to filter, sort, or format as dates, or use in date calculations.
To view a date serial number as a date, you must apply a date format to the cell. Find links to more information about displaying numbers as dates in the See Also section.

Cho nên ở đây chỉ đưa ra giải pháp chứ không phải là DẠY và HỌC.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom