Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 16
  1. #1
    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!

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chuyển một chuỗi dạng công thức




    Trích dẫn Gửi bởi thuydhpy
    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!
    Đơn giản ở cột A và B bạn cài công thức như nhau, sau đó bạn chọn cột A và nhấn Ctr+H, thay tất cả dấu "=" thành ' là được angcheo:

  3. #3
    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

  4. #4
    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

  5. #5
    Ngày tham gia
    Nov 2015
    Bài viết
    28
    Ðề: Chuyển một chuỗi dạng công thức




    Trích dẫn Gửi bởi atmt17
    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
    Hiện tại với Excel 2003 trở lên, bạn sẽ không thể dùng hàm Macro Excel 4 vì nó không tích hợp sẵn, ngay cả trong các Add-ins đính kèm.

    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.

  6. #6
    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.

  7. #7
    Ngày tham gia
    May 2016
    Bài viết
    0
    Ðề: Chuyển một chuỗi dạng công thức




    Trích dẫn Gửi bởi phatnq2002
    Hiện tại với Excel 2003 trở lên, bạn sẽ không thể dùng hàm Macro Excel 4 vì nó không tích hợp sẵn, ngay cả trong các Add-ins đính kèm.

    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.
    Có chứ anh! Tôi đang xài Excel 2003 và cả Excel 2007. Tôi xài macro 4 bình thường
    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)

  8. #8
    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.

  9. #9
    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
    VD: A2=1+2
    B2 = Tinh(A2)

  10. #10
    Ngày tham gia
    Apr 2016
    Bài viết
    9
    Ðề: Chuyển một chuỗi dạng công thức




    Trích dẫn Gửi bởi atmt17
    Có chứ anh! Tôi đang xài Excel 2003 và cả Excel 2007. Tôi xài macro 4 bình thường
    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)
    Ý tôi muốn nói rằng, để xài được cái Excel Macro 4 thì bạn phải khuyến cáo hay hướng dẫn người ta cách nào cài thư viện của nó để xài. Bởi vì, khi cái đặt Excel, tôi không cài đặt cái thư viện của Excel macro 4 vì như bác mượn nói, nó xưa rồi và "tiềm tàng hiểm họa". Muốn sử dụng nó, khi cài đặt phải tick vào để chọn hoặc cài Full.

    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.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •