Từ số thập phân chuyển thành phân số (0.5=1/2)?

  • Thread starter Tuanktcdcn
  • Ngày gửi
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
47
Hà Nội
www.bluesofts.net
Mình có cột A chứa các giá trị:
A1=0.5
A2=0.75
A3=1.5
A4=1.25
...các số lẻ
Mình muốn cột B vào công thức sao cho có các giá trị phân số như:
B1=1/2 (không phải là 2/4)
B2=3/4
B3=3/2
B4=5/4
Rất mong các bạn chỉ giúp.
 
Sửa lần cuối:
Khóa học Quản trị dòng tiền
IChiNoVa

IChiNoVa

Phu cà phê
2/4/05
134
4
18
Sòn Gài
www.xommuaban.vn
Dùng các công cụ có sẵn của Excel thì mình không biết.
Nên bạn có thể dùng VB để viết hàm:

Ý tưởng của mình là: 1/2 = 0.5 thì 0.5 * 2 = 1

Goi x là số thập phân, a/b là phân số
Bạn dùng một vòng lặp Until hoặc while:
Nhân x với b,
tăng dần b lên 1 đơn vị
Nhân cho đến khi nào kết quả là một số nguyên, kết quả đó là số a
Và bạn được phân số là: a/b

Bạn cũng cần phải gán cho b giá trị là 1 hoặc 2 trước khi vào vòng lặp
Và phải lưu ý, số thập phân của bạn không nên để là số thập phân vô hạn, nên cần phải làm tròn trước.

Bạn nên cẩn thận với những loại vòng lặp UNTIL hay WHILE, phải có điều kiện để dừng vòng lặp.

Bạn cũng có thể dùng đệ quy mà không cần dùng vòng lặp đối với những bài toán rắc rối hơn. Dùng đệ quy thì chương trình ngắn gọn hơn, hay hơn nhưng khó hơn một chút.
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Bác ơi đây là sở đoản của em ạh!
Bác vào Number format chọn custom
Bên phần type bác gỏ chuổi sau sẽ giúp được bác ạh :

"##/##"

(bác hiểu đúng không, không cần dấu ngoặc kép)

To IChiNoVa bạn chắc mới vào nên không biết chứ bác Tuanktcdcn là một cao thủ VBA đấy.
 
Sửa lần cuối:
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
47
Hà Nội
www.bluesofts.net
To IchiNoVa Theo cách của bạn là hoàn toàn đúng, nhưng theo cách này thì để có được kết quả phải đợi khá lâu để máy thực hiện xong (vì hàm này có thể phải dùng cho rất nhiều cell với các giá trị và đơn vị thập phân khác nhau). Tư tưởng của mình là không dùng VB hay VBA.
To OverAC Theo cách của bạn sáng tạo và hoàn toàn đúng nhưng ý mình không phải vậy.
Xin lỗi các bạn vì câu hỏi không rõ ràng!

Mình muốn lập công thức để cho ra giá trị là phân số?
Mình nghĩ để lập được công thức này cũng khá rắc rối nên muốn các bạn giúp cùng.
I rất mong nhận được thêm câu trả lời của các bạn.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Thưa bác
Việc thể hiện ra như thế chỉ có thể là một trong giá trị hoặc là chuổi hoặc là số. Nếu bác muốn nó là số thì em cho rằng bác phải làm như em đã nói nếu bác muốn kết quả của nó thành một chuổi thì em cũng có thể giúp bác. Bác có thể sử dụng hàm sau để biến nó thành một chuổi.
= text(A1,"##/##")
Rồi xong! Bây giờ thì giá trị ở ô B1 là một chuổi và bác có thể tha hồ xử lý chuổi này theo ý bác. Hy vọng là đúng với yêu cầu của bác.
Nếu bác muốn làm như ý của IChiNoVa bằng một công thức thì kế quả hiện ra phải là một chuổi đúng ko nào! Và như vậy thì bác sử lý như thế nào đi chăng nửa thì em vẩn tin rằng nó dài dòng hơn cách của em.
Nếu không thì em cũng có ý tưởng này:
Ví dụ: 0.5
= 5/UCLN(5,10) & "/" & 10 /UCLN (5,10)

Hàm ước chung lớn nhất em nhớ là đã thấy qua nó ở đâu đấy em quên mất tiêu rồi
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
47
Hà Nội
www.bluesofts.net
To OverAC: đúng rồi! cách của bạn cho phép lại + - * / vì nó là kiểu số. I vẫn khẳng định cách làm của bạn đúng và sáng tạo và hay! Tuy nhiên ý mình là lập công thức (từ A-Z không dùng format) để cho ra giá trị là phân số (là giá trị kiểu văn "Text").
OverAC và các bạn tiếp tục giúp nhé!
 
IChiNoVa

IChiNoVa

Phu cà phê
2/4/05
134
4
18
Sòn Gài
www.xommuaban.vn
Bạn không nên dùng chức năng Format bởi trong một vài trường hợp, kết quả sẽ là hỗn số chứ không phải phân số.

Nếu bạn không muốn dùng VBA thì có thể dùng hàm của Excel:
là hàm lấy UCLN, hàm đó là GCD. Nhưng trước hết bạn cần vào:
Tools - Add ins, trong hộp Add ins bạn chọn Analysis ToolPak, rồi OK.

Bạn cần phân tích các số thập phân ra, thành dạng gồm tử số và mẫu số nguyên, rồi sau đó tiến hành lấy UCLN của tử và mẫu, rồi biến nó thành chuỗi.

Cách làm như sau:
Bạn đếm bằng mắt xem, phần thập phân có mấy con số, giả sử là n.
Nhân số thập phân của bạn cho 10^n để có tử số, còn mẫu số là 10^n

VD: 1.02 Có 2 chữ số ở phần thập phân, nên có thể đổi nó thành phân số là 102/100
Trong đó 102 là 1.02*(10^2), còn 100 là 10^2.

Bạn nên định dạng cho cột chứa số thập phân, để các số thập phân đều có cùng lượng chữ số sau dấu phẩy. Để có thể thống nhất được số n ở trên, và dế tính toán hơn, Làm như vậy trông cũng đẹp mắt hơn.
VD:
1.050
2.100
0.003

Ở đây mình định dạng là 3 số ở phần thập phân, như vậy, tử số sẽ là: (số thập phân*1000), còn mẫu số sẽ là: 1000.

Để tìm UCLN bạn dùng hàm sau: GCD(tử số, mẫu số)
Tiếp theo chia tử và mẫu cho UCLN vừa tìm được để đơn giản phân số, rồi nối chúng lại thành chuỗi bằng hàm
TEXT(tử sau khi rút gọn,0) & "/" & TEXT(mẫu sau khi rút gọn,0)
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
IChiNoVa nói:
Bạn không nên dùng chức năng Format bởi trong một vài trường hợp, kết quả sẽ là hỗn số chứ không phải phân số.
Mong bạn IChiNoVa chỉ giáo là trường hợp nào sẽ là hổn số
 
IChiNoVa

IChiNoVa

Phu cà phê
2/4/05
134
4
18
Sòn Gài
www.xommuaban.vn
Mong bạn thứ lỗi, có lẽ, mình nhầm chăng, cách dùng chức năng Format của bạn rất chính xác, xin cám ơn, bạn đã chỉ ra chỗ sai lầm của mình.
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
47
Hà Nội
www.bluesofts.net
Xin cảm ơn sự đóng góp và giúp đỡ của OverAC và IchiNoVa, hai bạn đã đưa ra hai cách để cho ra kết quả.
Mình muốn có cách thứ ba là dùng công thức? Các bạn khác có cách gì không?
Xin chân thành cảm ơn!
 
K

KKBS

Guest
23/2/05
53
0
0
51
HCM
Sao các bạn không dùng định dạng của Excel ?!!!

Giả sử ô A1 chứa con số 0.5.

1. Chọn ô A1 bằng cách click vào ô này.
2. Trên menu Format, chọn Cell...
3. Chọn tab Number
4. Trong Category, chọn Fraction (Chọn thêm Type nếu cần thiết)

Hy vọng như vậy đáp ứng nhu cầu của bạn.

Thân,
KKBS.
 
IChiNoVa

IChiNoVa

Phu cà phê
2/4/05
134
4
18
Sòn Gài
www.xommuaban.vn
Mình đã đưa ra công thức đó.
Vd: ô A1=0.020
ô A1 đáng lẽ là 0.02 nhưng bạn nên định dạng 3 chữ số lẻ hoặc có thể hơn nữa là 0.020.
Nhằm mục đích dễ tính toán, mà trông cũng đẹp, bởi số nào cũng có 3 số lẻ.
Các bước lập CT ở các ô tiếp như sau:

Bước 1: biến đổi tí chút. A1 là tử số, A2 là mẫu số.
A2=A1*1000
A3=1000

Bước 2: Lấy UCLN.
A4=GCD(A2,A3)

Bước 3: Rút gọn.
A5=A2/A4
A6=A3/A4

Bước 4: Nối chúng lại thành text.
A7=Text(A5,0) & "/" & Text(A6/0)
 
Ly Thai Diep

Ly Thai Diep

Guest
10/12/15
1
0
1
44
B1=A1*1000000/GCD(A1*1000000;1000000)&"/"&1000000/GCD(A1*1000000;1000000)
Điều kiện: Phần thập phân không quá 6 chữ số
 
Espresso

Espresso

Trung cấp
30/10/15
108
34
28
74
Mình có cột A chứa các giá trị:
A1=0.5
A2=0.75
A3=1.5
A4=1.25
...các số lẻ
Mình muốn cột B vào công thức sao cho có các giá trị phân số như:
B1=1/2 (không phải là 2/4)
B2=3/4
B3=3/2
B4=5/4
Rất mong các bạn chỉ giúp.

try
B1=INT(A1/0.5)&"/2"
B2=INT(A2/0.25)&"/4"
B3=INT(A3/0.5)&"/2"
B4=INT(A4/0.25)&"/4"

Or
=TEXT(A1,"##/##")

the most basic concepts
have fun !
 
Sửa lần cuối:

Xem nhiều

Webketoan Zalo OA