Chuyển chuổi công thức thành tính toán ra giá trị

Liên hệ QC

vincentlee

Thành viên mới
Tham gia
6/8/12
Bài viết
13
Được thích
0
Bữa tạo cái thớt dưới không biết sao bị lock sớm thế, chưa giải quyết được, nên giờ đăng lại.

Mình có làm một file excel cần các bạn giúp cách thể hiện, mong các bạn giúp đỡ.

Mình có 2 ô, ví dụ ô A1 thì mình thể hiện cái số như sau: 12/16*11 + 12/10
ô A2 thì mình muốn tính tổng =(12+16)*11+(12+10)=330

Vấn đề là vì ô A1 mình thể hiện dạng chuỗi, mà mình muốn lúc nào mình thay đổi bất cứ số nào trong ô A1 thì kết quả ở ô A2 sẽ thay đổi tương ứng theo.
Mình ko biết dùng hàm gì để làm vụ này, mong các bạn chỉ giáo, và lưu ý ô A1 vì là dạng chuỗi nên mình viết có khoảng cách 2 bên dấu cộng nhé. tks mọi ng giúp đỡ...
 

File đính kèm

Bữa tạo cái thớt dưới không biết sao bị lock sớm thế, chưa giải quyết được, nên giờ đăng lại.

Mình có làm một file excel cần các bạn giúp cách thể hiện, mong các bạn giúp đỡ.

Mình có 2 ô, ví dụ ô A1 thì mình thể hiện cái số như sau: 12/16*11 + 12/10
ô A2 thì mình muốn tính tổng =(12+16)*11+(12+10)=330

Vấn đề là vì ô A1 mình thể hiện dạng chuỗi, mà mình muốn lúc nào mình thay đổi bất cứ số nào trong ô A1 thì kết quả ở ô A2 sẽ thay đổi tương ứng theo.
Mình ko biết dùng hàm gì để làm vụ này, mong các bạn chỉ giáo, và lưu ý ô A1 vì là dạng chuỗi nên mình viết có khoảng cách 2 bên dấu cộng nhé. tks mọi ng giúp đỡ...
Đặt tiêu đề thế này chắc lại sớm bị khóa thôi! Hổng dám trả lời vào đây!
 
Bạn còn đặt tiêu đề kiểu đó thì sẽ còn bị khóa bài.
Tôi đã giúp bạn sửa đổi tiêu đề bài viết và cũng là cái để bạn tìm kiếm bài viết cho phù hợp
--> hãy search cái tiêu đề tôi vừa sửa cho bạn trong ô tìm kiếm của Giaiphapexcel.
 
Đặt tiêu đề thế này chắc lại sớm bị khóa thôi! Hổng dám trả lời vào đây!

Thì tùy bạn đánh giá thôi. Nhiều khi không thể cân đo đong đếm chính xác được.
Tôi hiểu là có chuỗi và cần chuyển thành số. Thế là rõ rồi. Còn nếu nói về văn vẻ, ngữ pháp, cách diễn đạt thì tôi nghĩ 99% người Việt có vấn đề, có khó khăn. Đọc trên GPE là thấy rõ.
Còn chuyện người khác đánh giá khác và họ có quyền xóa đi thì coi như là tai nạn không lường trước được. Thế thôi.

@ chủ chủ đề: vấn đề không phải là bạn có chuỗi mà vấn đề là bạn có kiểu viết kỳ quặc. Tại sao không là (12+16)*11+(12+10) hoặc (12+16)*11+12+10 mà lại là 12/16*11 + 12/10?

Thế nếu phép tính là (a*b+c)*d thì bạn định viết thế nào? Là a*b/c*d? Hay thế nào nữa? Qui luật dùng "/"? Đã có khái niệm mới, qui tắc mới, ngược đời thì phải định nghĩa khái niệm đó, qui tắc đó.

Lười thì cũng vừa vừa thôi. Không phải vô cớ mà người ta dùng thêm cặp ngoặc ()
 
Thì tùy bạn đánh giá thôi. Nhiều khi không thể cân đo đong đếm chính xác được.
Tôi hiểu là có chuỗi và cần chuyển thành số. Thế là rõ rồi. Còn nếu nói về văn vẻ, ngữ pháp, cách diễn đạt thì tôi nghĩ 99% người Việt có vấn đề, có khó khăn. Đọc trên GPE là thấy rõ.
Còn chuyện người khác đánh giá khác và họ có quyền xóa đi thì coi như là tai nạn không lường trước được. Thế thôi.

@ chủ chủ đề: vấn đề không phải là bạn có chuỗi mà vấn đề là bạn có kiểu viết kỳ quặc. Tại sao không là (12+16)*11+(12+10) hoặc (12+16)*11+12+10 mà lại là 12/16*11 + 12/10?

Thế nếu phép tính là (a*b+c)*d thì bạn định viết thế nào? Là a*b/c*d? Hay thế nào nữa? Qui luật dùng "/"? Đã có khái niệm mới, qui tắc mới, ngược đời thì phải định nghĩa khái niệm đó, qui tắc đó.

Lười thì cũng vừa vừa thôi. Không phải vô cớ mà người ta dùng thêm cặp ngoặc ()

Bạn hiểu lầm mình lười cũng đúng thôi, tại sao mình lại viết 12/16*11 + 12/10 mà ko viết (12+16)*11+(12+10)?
Lý do là vì chuỗi này thể hiện cách xếp hàng trong kho của mình, và hằng ngày cũng viết báo cáo số lượng theo kiểu như vậy, 12/16 nghĩa là số lượng thùng ở dưới và ở trên, nên bạn thông cảm nhé, ko phải mình muốn ngược đời đâu..
 
Bạn hiểu lầm mình lười cũng đúng thôi, tại sao mình lại viết 12/16*11 + 12/10 mà ko viết (12+16)*11+(12+10)?
Lý do là vì chuỗi này thể hiện cách xếp hàng trong kho của mình, và hằng ngày cũng viết báo cáo số lượng theo kiểu như vậy, 12/16 nghĩa là số lượng thùng ở dưới và ở trên, nên bạn thông cảm nhé, ko phải mình muốn ngược đời đâu..

Bài viết của tôi có nhiều ý. Cái bình thường với bạn nhưng với người khác không phải cũng vậy.
Bạn đọc cái này chưa?
Qui luật dùng "/"? Đã có khái niệm mới, qui tắc mới, ngược đời thì phải định nghĩa khái niệm đó, qui tắc đó.

Bạn hiểu qui tắc chưa đủ. Một khi bạn nhờ người khác thì phải định nghĩa để họ hiểu.
 
Lần chỉnh sửa cuối:
Bài này ở chủ đề trước mình trả lời rồi mà, vẫn chưa đúng ý bạn à?
=(TRIM(LEFT(A1,FIND("/",A1)-1))+TRIM(MID(A1,FIND("/",A1)+1,FIND("*",A1)-FIND("/",A1)-1)))*TRIM(MID(A1,FIND("*",A1)+1,FIND("+",A1)-FIND("*",A1)-1)) +TRIM(LEFT(A1,FIND("/",A1)-1))+TRIM(RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("/",A1)+1)))
 
Bài này ở chủ đề trước mình trả lời rồi mà, vẫn chưa đúng ý bạn à?
=(TRIM(LEFT(A1,FIND("/",A1)-1))+TRIM(MID(A1,FIND("/",A1)+1,FIND("*",A1)-FIND("/",A1)-1)))*TRIM(MID(A1,FIND("*",A1)+1,FIND("+",A1)-FIND("*",A1)-1)) +TRIM(LEFT(A1,FIND("/",A1)-1))+TRIM(RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("/",A1)+1)))
mình đã thử công thức của bạn, cám ơn, nhưng khi mình thử đổi số 12/16 thành số 10/16 thì nó ra kết quả sai. công thức của bạn khá đúng với ý muốn mình, bạn vui lòng tải file excel mới mình up lại rồi mở ra xem nhé, vì có mấy chuỗi số cũng hơi khác, nhưng có lẽ mình nghĩ bạn giúp được mình vì cũng gần tới đích, tks bạn...
 
thớt trước mình đã muốn reply bạn, nhưng lại bị lock mình ko được, cám ơn Hau151978
 
Bạn hiểu lầm mình lười cũng đúng thôi, tại sao mình lại viết 12/16*11 + 12/10 mà ko viết (12+16)*11+(12+10)?
Lý do là vì chuỗi này thể hiện cách xếp hàng trong kho của mình, và hằng ngày cũng viết báo cáo số lượng theo kiểu như vậy, 12/16 nghĩa là số lượng thùng ở dưới và ở trên, nên bạn thông cảm nhé, ko phải mình muốn ngược đời đâu..
Tôi nghĩ có nhiều cách để quy ước? Tại sao bạn lại làm khó mình như vậy chứ?, Ví dụ,
với (12+16)*11+(12+10), bạn quy ước là trước dấu "+" là số lượng thùng ở dưới (trên) còn sau dấu "+" là ở trên (ở dưới) chẳng hạn. Đây cũng là 1 cách quy ước tuy nhiên để tính giá trị của chuổi này lại rất dễ dàng. Nếu bạn đồng ý với quy ước như thế này thì chúng ta tiếp tục.
P/S: Với cách làm của bạn Hau151978 thì chỉ đúng cho trường hợp chuỗi số có dạng như bạn đưa nên hỏi thôi, với chuỗi số khác đi thì không bao giờ ra kết quả. Khẳng định luôn với bạn như vậy!
 
VBA tý cho vui. Bạn thêm Function tinh vào module.
Mã:
Function tinh(s As String)
i = InStr(s, "*")
s = "(" & Left(s, i - 1) & ")" & Right(s, Len(s) - i + 1)
s = Replace(s, "/", "+")
tinh = Evaluate(s)
End Function
Ví dụ ô A1 có dạng 12/16*11 +12/10, tại ô A2 bạn nhập =tinh(A1)
Trong file của bạn có 1 ô "bất thường" là ô O37 =16*6+14*2, phương pháp của mình vẫn đúng nhưng cẩn thận với những dạng khác nữa thì phải sửa code.
 

File đính kèm

mình đang thay đổi, đồng ý với bạn, bạn cho mình cách tính đi, các trường hợp có trong file..tks bạn..
 
đúng bạn ợ, tuy nhiên cũng cảm ơn bạn Hau151978 nhiệt tình giúp đỡ, có lẽ thay đổi một lần cho về sau nhẹ cái đầu, theo bạn chuot0106.
Bạn đưa File lên đi, tôi xem dữ liệu của bạn bố trí ra sao? Không có File thật sửa đi, sửa lại mất thời gian lắm!
 
đã tải file mới lên..
Dùng hàm "tinh" để tính, cách sử dụng giống hàm SUM trong Excel. Ví dụ để tính giá trị trong chuỗi B7 thì tại B8, gõ công thức:
sau đó enter, hình như bạn chưa biết gì về VBA thì phải? Nhớ Enable Macros (Tự tìm hiểu trên mạng)trước khi mở File nhé!
P/S: Thực ra ý tưởng của tôi và bạn Hau151978 đều giống nhau đó là sử dụng Evaluate để tính!
 

File đính kèm

mình, đã thử module của bạn hau151978, đã chạy tốt, cũng thử đánh mấy khoảng trắng 2 bên dấu cộng cũng chạy tốt, ko biết là hên xui hay là nó vẫn chạy tốt nếu mình đánh khoảng trắng, mong bạn hau151978 giải đáp thêm dùm.
Nhân tiện cám ơn bạn chuột luôn, cám ơn mọi ng đã nhiệt tình giúp đỡ..
 
mình, đã thử module của bạn hau151978, đã chạy tốt, cũng thử đánh mấy khoảng trắng 2 bên dấu cộng cũng chạy tốt, ko biết là hên xui hay là nó vẫn chạy tốt nếu mình đánh khoảng trắng, mong bạn hau151978 giải đáp thêm dùm.
Nhân tiện cám ơn bạn chuột luôn, cám ơn mọi ng đã nhiệt tình giúp đỡ..
Khoảng trắng vẫn chạy được, trừ khi số 12 bạn lại viết là "1 2" thì sẽ lỗi. Thực ra tính chuỗi của bạn nếu đã bổ sung dấu ngoặc thì rất dễ, nếu đang dùng dấu "/" thì chỉ cần đổi thành dấu "+" bằng lệnh Replace. Quan trọng là bố trí dấu "()" nếu chưa có ở đâu thôi.
 
Web KT

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

Back
Top Bottom