Chủ đề: Chuyển một chuỗi dạng công thức
-
03-23-2009, 05:11 AM #1Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Chuyển một chuỗi dạng công thức
Mình có 2 cột cần thực hiện trong bảng tính Excel, một cột cần diễn giải công thức tính và một cột hiển thị kết quả của công thức tính,
Ví dụ ô A2 hiển thị 2* 4+ 3 thì ô B2 cho kết quả 11
Trong excel có hàm nào thực hiện việc này hay không? hay mình phải tự viết hàm chuyển theo cách tính biểu thức dùng kí pháp Balan.
Rất mong các bạn giúp đỡ. Xin cảm ơn rất nhiều!View more random threads:
- Ô excel ko cho nhập dữ liệu - :dapghe
- CÁCH TẠO 1FORM ĐỂ NHẬP
- Lỗi khi sử dụng macro,addin
- Tạo Form Nhập Liệu Trong Excel
- Làm sao để past link từ word (nhiều trang liên tiếp) qua Excel
- Cần hỗ trợ code VBA
- Xóa vùng các dòng một khi 1 ô trong vùng đạt điều kiện (cần xóa)
- Copy file bị cách dòng!
- Trong Excel 2003 có cách nào định dạng kiểu chữ tự động không ?
- V/v xin giúp tạo menu form nhập liệu trong excel
-
03-24-2009, 02:20 AM #2Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Gửi bởi thuydhpy
-
03-24-2009, 02:46 AM #3Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 7
Ðề: Chuyển một chuỗi dạng công thức
Có lẽ bạn phải viết hàm tự tạo thôi.
Trong VBA có hàm evaluate() để tính toán.
Đây là đoạn code lụm được trên net, hình như là bên Giải pháp Excel thì phải:
<div style="padding-left: 30px">Public Function Gtr(Dulieu As String, Optional Pcach = ",")
Dim i, temp
If Len(Dulieu) = 0 Then Exit Function
Dulieu = Replace(Dulieu, Pcach, "")
Dulieu = Replace(Dulieu, ",", ".")
For i = 1 To Len(Dulieu)
Select Case Mid(Dulieu, i, 1)
Case "x": temp = temp & "*"
Case ":": temp = temp & "/"
Case "+", "-", "*", "/", "(", ")", ".", 0 To 9: temp = temp & Mid(Dulieu, i, 1)
End Select
Next i
For i = 1 To Len(Dulieu)
Select Case Right(temp, 1)
Case "-", "+", "*", "/": temp = Left(temp, Len(temp) - 1)
End Select
Next
Gtr = Evaluate(temp)
End Function
</div>Như vậy ở trên có xét đến thông thường người Việt ta dùng dấu thập phân là dấu phẩy.
Khi đó cần báo cho biết trong công thức thì dấu phẩy là dấu thập phân.
VD: = Gtr("2,5 * 4", ",") kết quả là 10
-
03-31-2009, 03:52 AM #4Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Cách khác dùng hàm macro 4 mà ít người biết đến:
- Đặt con trỏ chuột tại dòng 2 (cell nào cũng được)
- Bấm Ctrl + F3 để vào Define name
- Khung Names in Workbook gõ chử Tinh
- Khung Refers to gõ công thức: =Evaluate($A2) (chú ý dấu $)
- OK quay lại bảng tính. Tại cell B2, gõ công thức =Tinh
- Có thể kéo fill xuống nếu muốn tính co A3, A4...
Thử xem!
Nếu muốn viết thành 1 UDF cũng có thể áp dụng các hàm macro 4 cho ngắn gọn
-
03-31-2009, 05:05 AM #5Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 28
Ðề: Chuyển một chuỗi dạng công thức
Gửi bởi atmt17
Nếu bạn muốn người khác sử dụng các hàm macro Excel 4 thì bạn cần phải chỉ cho người khác biết là phải add cái thư viện đó vào như thế nào và từ đâu. Nếu không, ý kiến của bạn trở nên vô dụng.
-
03-31-2009, 04:47 PM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Nếu bạn dùng đoạn code tôi đã đưa ở trên thì sẽ có nhiều ứng dụng cần xài tới.
Ví dụ bạn là quyết toán công trình xây dựng thường bạn lên bảng Excel là:
Ở đoạn code trên bạn sẽ thấy là ô B2 có công thức "=gtri(A2)" mà A2 là "công sơn lót= 2m * 6m * 2 lần" gồm cả số lẫn chữ trong đó.
Đoạn code sẽ lọc các con số để tính toán, còn chữ thì bỏ qua.
-
03-31-2009, 08:38 PM #7Silver member
- Ngày tham gia
- May 2016
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Gửi bởi phatnq2002
Vấn đề không phải nằm ở chổ biến dấu x thành dấu * hay biến dấu : thành dấu /
Ý tôi muốn nói thay vì anh phải dùng For thì ta dùng macro 4 (hàm Evaluate) để biến chuổi công thức thành giá trị
Không tin anh có thể thử (cái này bên www.****************** có đầy)
-
03-31-2009, 10:17 PM #8Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Xài được.
Nhưng chẳng ai đi ngược thời đại.
Trong khi VBA là ngôn ngữ hổ trợ hướng đối tượng còn Macro 4 thì rất nghèo nàn, còn kém hơn cả VB trình thông dịch đời đầu nữa à.
Cách làm như bạn thì cũng chỉ mới là 1 dòng cuối của đoạn function trên do đó không thể nói là macro 4 ngắn gọn hơn.
Nếu muốn làm được công việc như cả function đó làm mà dùng macro 4 thì sẽ dài dòng hơn nhiều.
===
Nhiều khi người hỏi đưa câu hỏi không rõ ràng, nhưng ta cần nghĩ rằng trên diễn đàn này là những người đã đi làm.
Câu hỏi của người ta thường gắn với 1 công việc nào đó chứ không phải là học sinh mới làm quen với máy tính.
1 cái hàm evaluate() chẳng giúp ích được gì cả.
===
Trong đoạn code có đoạn:
Case ":": temp = temp & "/"
Bạn nên bỏ dòng này vì nó sẽ biến dấu ":" thành dấu chia.
Nhưng thường thì trong hành văn ta cũng ưa sử dụng dấu ":" mà không phải là dấu chia. Ví dụ "Công sơn lót : 2m x 6m x 2 lần x 1000đ"
Đoạn code đó nhìn chung vẫn còn là rất đơn sơ. Trong công việc cụ thể của mình, theo thói quen hành văn của mình, bạn hãy thêm mắm thêm muối cho phù hợp.
-
04-01-2009, 11:12 PM #9Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển một chuỗi dạng công thức
Cái này mình thấy đơn giản mà mọi người cứ nói tùm lum hêt. Bạn làm như sau:
Function tinh(chu As String)
tinh = Evaluate(chu)
End Function
B2 = Tinh(A2)
-
04-02-2009, 04:49 AM #10Silver member
- Ngày tham gia
- Apr 2016
- Bài viết
- 9
Ðề: Chuyển một chuỗi dạng công thức
Gửi bởi atmt17
Cái cách của bác mượn cũng có "hơi hám" từ giaiphapexcel đấy, và theo tôi đó là một trong những cách giải quyết tốt. Tốt là vì vẫn để cho người ta nhập theo thói quen, khi xử lý sẽ chuyển về chuẩn chung để máy tính (hay Excel) hiểu.
Du lịch Mỹ đến “thiên đường giải trí” Las Vegas là một trong những điểm hấp dẫn du khách tham gia các tour Mỹ. Bởi tại đây, du khách có thể cảm nhận trọn vẹn sự sầm uất và độ “nóng” của thiên đường...
Du lịch Mỹ đến “thiên đường giải trí” Las Vegas