PDA

View Full Version : hàm right



Kakalos
11-11-09, 07:13 AM
Xin các cao thủ chỉ giúp xem tại sao mình đã sử dụng hàm right lấy giá trị bên phải nhưng lại ra 1 dãy số.

Hai Lúa Miền Tây
11-11-09, 07:24 AM
Xin các cao thủ chỉ giúp xem tại sao mình đã sử dụng hàm right lấy giá trị bên phải nhưng lại ra 1 dãy số.
Bạn thử như sau:
C1=TEXT(B1,"hh:mm:ss"), kéo xuống.

logica
11-11-09, 07:24 AM
Nó là thời gian mà bạn cắt như thế ra 1 dãy số là phải rồi! Sao bạn không dùng hàm Time để lấy thời gian?
VD: =TIME(HOUR(B1),MINUTE(B1),SECOND(B1))

khoavu87
11-11-09, 07:27 AM
bạn xem thêm ý nghĩa của hàm right
Hàm RIGHT
Công dụng: Dùng để trích xuất phần bên phải của một chuỗi một hoặc nhiều ký tự tùy theo sự chỉ định của bạn

Công thức: =RIGHT(text [,num_chars])
___text: chuỗi văn bản cần trích xuất ký tự
___num_chars: số ký tự cần trích ra phía bên phải của chuỗi text, mặc định là 1

- num_chars phải là số nguyên dương
- Nếu num_chars lớn hơn độ dài của chuỗi thì kết quả trả về sẽ là toàn bộ chuỗi text



Nó là thời gian mà bạn cắt như thế ra 1 dãy số là phải rồi! Sao bạn không dùng hàm Time để lấy thời gian?
VD: =TIME(HOUR(B1),MINUTE(B1),SECOND(B1))
cái này dài quá bạn ơi.Đã có Hàm Text sài rùi ngắn gọn nên dùng hàm đó thui(đầy đủ định dạng cho nó)

ndu96081631
11-11-09, 07:30 AM
Công thức vầy mới là gọn nhất:
=MOD(B1,1)
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss là xong!

khieukienag
11-11-09, 07:30 AM
Bạn thử làm cách khác.

tam8678
11-11-09, 07:48 AM
Công thức vầy mới là gọn nhất:
=MOD(B1,1)
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss là xong!
---
Chú cho anh hỏi? xử dụng như thế này có được không:
=B1
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss

ndu96081631
11-11-09, 07:53 AM
---
Chú cho anh hỏi? xử dụng như thế này có được không:
=B1
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss
Tất nhiên là được
Cách của anh là định dạng cho ta nhìn thấy những gì ta cần, còn giá trị thật của cell thì không hề thay đổi
Ở đây người ta đặt hẳn 1 cột để tách GIỜ, chắc không phải để nhìn chơi, anh đồng ý với em điều này không? Em nghĩ người ta dùng cột GIỜ này để làm tiếp việc gì đó cũng nên (tính toán cộng trừ nhân chia) ---> Vậy, em cho rằng nếu dùng Format có thể không phải là ý đồ của tác giả
Tuy trường hợp mà quyết định nên xài kiểu nào anh à!

DOSNET
11-11-09, 07:59 AM
---
Chú cho anh hỏi? xử dụng như thế này có được không:
=B1
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss

Nếu đã mất công định dạng cách này là ngắn nhất.

logica
11-11-09, 08:20 AM
cái này dài quá bạn ơi.Đã có Hàm Text sài rùi ngắn gọn nên dùng hàm đó thui(đầy đủ định dạng cho nó)
Mặc dù dài nhưng mới thực sự là lấy thời gian ra xài riêng đó bạn! Như vậy mới đúng ý đồ tác giả là cần cắt thời gian ra chứ! (cách của thầy Ndu là hay nhất).
Bạn xem thử file kiểm tra này nhé!

yeuthamhangxom
11-11-09, 10:37 AM
Công thức vầy mới là gọn nhất:
=MOD(B1,1)
Sau khi ra kết quả, ta định dang nó ở dạng hh:mm:ss là xong!
Công thức này là ngon nhất nhưng bạn ndu96081631 cho xin ý nghĩa hàm MOD luôn với vì mình còn +-+-+-+ lắm.
Thân.

Hai Lúa Miền Tây
11-11-09, 10:43 AM
Công thức này là ngon nhất nhưng bạn ndu96081631 cho xin ý nghĩa hàm MOD luôn với vì mình còn +-+-+-+ lắm.
Thân.
Hàm MOD()
Tác giả: Bùi Nguyễn Triệu Tường (BNTT - GPE)
Tổng hợp: phamnhukhang (GPE)

Hàm MOD()

Dùng để lấy số dư của một phép chia</SPAN>
Cú pháp: = MOD(number, divisor)
number: Số bị chia
divisor: Số chia
Ví dụ: MOD(24, 10) = 4 (24 chia 10 được 2, dư 4)


Một công thức tốt hơn để tính toán số thời gian chênh lệch
Ở bài Lập bảng chấm công và tính lương (http://www.giaiphapexcel.com/forum/showpost.php?p=51549&postcount=21%5BB), chúng ta đã biết cách để tính số thời gian chênh lệch, đó là lấy thời gian hoàn thành (EndTime) trừ đi thời gian bắt đầu (StartTime), và để phòng hờ trường hợp thời gian xuyên qua một ngày (khi đó có thể thời gian lúc hoàn thành nhỏ hơn thời gian bắt đầu, ví dụ làm từ 20 giờ ngày hôm trước đến 8 giờ ngày hôm sau), thì ta dùng công thức:
= IF(EndTime < StartTime, 1 + EndTime - StartTime, EndTime - StartTime)
Tuy nhiên, ta cũng đã biết rằng, Excel tính toán với thời gian như tính toán với một con số chạy từ 0 cho tới 1, và lại bắt đầu từ 0 vào lúc nửa đêm. Do đó, ta có thể dùng hàm MOD() để thay cho công thức ở trên:
= MOD(EndTime - StartTime, 1)
Ví dụ:

Tính số thời gian làm việc từ 10 giờ sáng đến 11 giờ đêm:
= MOD(23:00 - 10:00, 1) = 13

Tính số thời gian làm việc từ 10 giờ đêm đến 11 giờ trưa hôm sau:
= MOD(11:00 - 22:00, 1) = 13
Cộng các ô cách nhau một số hàng cố định

Có một bài toán như sau:

Trong một cột dữ liệu, người ta muốn tính tổng của cách ô cách nhau mỗi n hàng nào đó.
Ví dụ, trong dãy A1:A20, tính tổng của các ô cách nhau 5 ô, nghĩa là lấy A1 + A6 + A11 + A16
Nói tới hàng, ta nghĩ đến hàm ROW(): ROW(A1) = 1, ROW(A6) = 6, v.v...

Và ở ví dụ vừa nêu trên đây, ta để ý các con số 1, 6, 11, 16 khi đem chia cho 5 đều dư 1, vậy ta nghĩ đến hàm MOD(), lấy số thứ tự của hàng chia cho 5: MOD(ROW(A1), 5) = 1, MOD(ROW(A6), 5) = 1, v.v...

Vậy ta sẽ lập công thức cho mảng A1:A20:
Xét trong khối A1:A20, ô nào có số thứ tự của hàng chia cho 5 mà dư 1, thì lấy các ô đó cộng lại:
{= SUM(IF(MOD(ROW(A1:A20), 5) = 1, A1:A20, 0))}
Hay cụ thể hơn, gọi dãy ô để tính tổng là range, và số hàng cách nhau giữa các ô là n, ta sẽ có công thức:
{= SUM(IF(MOD(ROW(range), n) = 1, range, 0))}
Con số 1 ở đây không phải là con số cố định, mà nó là số dư của phép chia của số thứ tự cho n. Do đó, tùy vào điều kiện của bài toán mà ta thay bằng con số thích hợp.
Chẳng hạn, cũng ví dụ trên đây, như ta muốn tính tổng của các ô A2, A7, A12, A17 thì công thức sẽ là:
{= SUM(IF(MOD(ROW(A1:A20), 5) = 2, A1:A20, 0))}
(2 là số dư của 2, 7, 12, 17 cho 5)

Cộng các ô có số thứ tự hàng là chẵn, hoặc có số thứ tự hàng là lẻ
Từ bài toán trên đây, ta có công thức để cộng các ô có số thứ tự hàng làm chẵn:
{= SUM(IF(MOD(ROW(Range), 2) = 0, Range, 0))}
Và công thức để cộng các ô có số thứ tự hàng làm lẻ:
{= SUM(IF(MOD(ROW(Range), 2) = 1, Range, 0))}
Xem một năm có phải là năm nhuận hay không
Nếu bạn muốn có một công thức để xem thử một năm nào đó có phải là năm nhuận hay không, bạn có thể dùng hàm MOD().
Năm nhuận, là năm chia hết cho 4, hay phép dư của phép chia số năm cho 4 thì bẳng 0 ở công thức sau đây:
= MOD(year, 4)
Số năm phải là một con số có 4 chữ số.

Công thức trên chỉ đúng trong khoảng từ năm 1901 đến 2099 (có lẽ chúng ta cũng sống tối đa trong khoảng thời gian này thôi). Công thức này không đúng với năm 1900 và 2100, bởi vì điều kiện để tính năm nhuận còn có chuyện: Năm nhuận là năm chia hết cho 4, nếu năm này tận cùng bằng hai con số 0 thì nó phải chia hết cho 400 (ví dụ, năm 2000).

Vậy, để có một công thức đúng cho tất cả mọi năm, ta làm một công thức luận lý như sau:
= (MOD(year, 4) = 0) - (MOD(year, 100) = 0) + (MOD(year, 400) = 0)
Nếu công thức này cho đáp số là 1 (TRUE), thì đó là năm nhuận, còn nếu cho đáp số là 0 (FALSE), thì đó không phải là năm nhuận.
Ứng dụng của hàm MOD() trong định dạng bảng tính
Chắc cũng có một lúc nào đó, bạn thích định dạng cho bảng tính của mình theo kiểu Ledger Shading. Ledger Shading là kiểu định dạng các hàng có màu xen kẽ nhau (ví dụ, xanh và trắng). Loại định dạng này thích hợp cho những danh sách dài, có nhiều cột, giúp ta phân biệt được hàng này với hàng kia cách dễ dàng, ít khi bị nhìn lầm dữ liệu giữa các hàng...

Hình sau đây là một ví dụ:

http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=36023&stc=1&d=1257910952


Dĩ nhiên là việc này rất dễ thực hiện, chúng ta chỉ cần chọn các hàng xen kẽ nhau và tô màu cho nó. Tuy nhiên, nếu làm thủ công bằng tay, thì sẽ có một số bất tiện sau:
- Rất lâu cho những bảng dữ liệu lớn.

- Mỗi khi chèn thêm một hàng hoặc xóa bớt một hàng, thì phải định dạng lại.

Để tránh những bất tiện đó, bạn có thể dùng một liên kết giữa hàm MOD() và chức năng Conditional Formatting (định dạng có điều kiện) của Excel.

Cách làm như sau:
1. Chọn vùng bạn muốn định dạng
2. Gọi hộp thoại Conditional Formatting, và chọn New Ruler để mở hộp thoại New Formatting Ruler
3. Chọn Use a Formula to Determine Which Cells to Format
4. Trong khung Format values where this formular is true, gõ công thức = MOD(ROW(), 2)

http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=36024&stc=1&d=1257969737

5. Nhấn nút Format... để mở hộp thoại Format Cells
6. Chọn tab Fills, chọn màu bạn thích tô cho các hàng xen kẽ với màu trắng, rồi nhấn OK để quay về hộp thoại New Formatting Ruler
7. Nhấn OK
Công thức = MOD(ROW(), 2) sẽ trả về 1 cho những hàng có số thứ tự lẻ và trả về 0 cho những hàng có số thứ tự chẵn. Bởi vì 1 thì tương đương với TRUE, nên Excel sẽ áp dụng màu tô mà bạn đã chọn cho tất cả những hàng có số thứ tự lẻ trong vùng bạn muốn định dạng, và bỏ qua những hàng có số thứ tự chẵn.


Tương tự,
· Nếu muốn định dạng các cột có màu xen kẽ, bạn chỉ cần thay công thức ở trên thành:
= MOD(COLUMN(), 2)
· Nếu thích định dạng cho hàng có số thứ tự lẻ thì không tô màu, còn hàng có số thứ tự chẵn mới tô màu, bạn thay đổi công thức trên một tí:
= MOD(ROW() + 1, 2)

ndu96081631
11-11-09, 10:59 AM
Công thức này là ngon nhất nhưng bạn ndu96081631 cho xin ý nghĩa hàm MOD luôn với vì mình còn +-+-+-+ lắm.
Thân.
Đầu tiên ta nên hiểu DATE như thế này:
- Nó gồm 2 phần: Phần ngày + phần giờ ---> Trong đó phần ngày là phần nguyên còn phần giờ là phần thập phân (tức phần lẻ)
--------------
Để lấy phần nguyên của 1 số, ta dùng hàm INT
Để lấy phần thập phân của 1 số, ta dùng hàm MOD
--------------
Theo như mô tả ở trên, vì phần giờ là phần thập phân, nên để lấy nó ra, đương nhiên ta phải dùng hàm MOD rồi

havietchuong
11-11-09, 07:52 PM
[QUOTE=khoavu87;201367]bạn xem thêm ý nghĩa của hàm right
Hàm RIGHT
Công dụng: Dùng để trích xuất phần bên phải của một chuỗi một hoặc nhiều ký tự tùy theo sự chỉ định của bạn

Công thức: =RIGHT(text [,num_chars])
___text: chuỗi văn bản cần trích xuất ký tự
___num_chars: số ký tự cần trích ra phía bên phải của chuỗi text, mặc định là 1

- num_chars phải là số nguyên dương
- Nếu num_chars lớn hơn độ dài của chuỗi thì kết quả trả về sẽ là toàn bộ chuỗi text





Khoa này.
Công thức của Khoa, tôi thấy rất đúng luôn. Tại vì mình thấy cần định dạng các số đó thì chúng ta sẽ thấy và nếu thấy ta sẽ có suy nghĩ thêm, mình phải làm gì. Thân Mến. (Xem thử ở file đính kèm)%#^#$

havietchuong
11-11-09, 08:52 PM
Dự định đưa lên cửa sổ của định dạng số nhưng khi thực hiện rồi gởi lên chương trình báo lỗi không thể được. Thông cảm.