Tạo ghi chú diễn giải công thức

Liên hệ QC

limfx

Thành viên mới
Tham gia
20/2/09
Bài viết
34
Được thích
1
Mình đang giải quyết vấn đề như sau:
Giá trị tại các ô: A1: 1; B1: 2; C1: 3
Tại ô D1 mình có công thức tính: =A1*B1+C1
Tại ô E1 mình có diễn giải công thức tại ô D1 là : =A1&"*"&B1&"+"&C1
Mình muốn có hàm hoặc code đưa kết quả chú thích tự động như tại ô D1 mà không phải làm thủ công tốn thời gian? Nhờ các bạn giúp đỡ, thanks!
 

File đính kèm

  • nhap2.xls
    22.5 KB · Đọc: 21
Lần chỉnh sửa cuối:
Mình đang giải quyết vấn đề như sau:
Giá trị tại các ô: A1: 1; B1: 2; C1: 3
Tại ô D1 mình có công thức tính: =A1*B1+C1
Tại ô E1 mình có diễn giải công thức tại ô D1 là : =A1&"*"&B1&"+"&C1
Mình muốn có hàm hoặc code đưa kết quả chú thích tự động như tại ô D1 mà không phải làm thủ công tốn thời gian? Nhờ các bạn giúp đỡ, thanks!
Hàm này:
PHP:
Function JoinText(ByVal Sep As String, ByVal IgnoreBlanks As Boolean, ParamArray sArray()) As String
  Dim tmpArr, SubArr, Arr(), Item, n As Long, tmp As String
  On Error Resume Next
  For Each SubArr In sArray
    tmpArr = SubArr
    If TypeName(tmpArr) <> "Variant()" Then
      tmp = IIf(TypeName(tmpArr) = "Error", "", Trim(CStr(tmpArr)))
      If IgnoreBlanks = False Or Len(tmp) Then
        n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = tmp
      End If
    Else
      For Each Item In tmpArr
        tmp = IIf(TypeName(Item) = "Error", "", Trim(CStr(Item)))
        If IgnoreBlanks = False Or Len(tmp) Then
          n = n + 1
          ReDim Preserve Arr(1 To n)
          Arr(n) = tmp
        End If
      Next
    End If
  Next
  If n Then JoinText = Join(Arr, Sep)
End Function
Công thức gõ tại D1 là: =JoinText("+", TRUE, A1:C1)
Còn nếu có dấu "*" giống như ví dụ của bạn thì vẫn phải "ghép" thôi =JoinText("*",TRUE,A1:B1)&"+"&C1
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn yêu cầu code, do đó tôi nghĩ bạn đã biết cách chèn thêm 1 module trong VBE để copy cái function dưới đây vào:
Function f2t(r As Range) As String
Application.Volatile
If r.HasFormula Then f2t = r.Formula
End Function
 
Upvote 0
Vẫn không ổn rồi anh, trong hàm trên chỉ có dấu +, tức là tính tổng, nhưng yêu cầu của em là có nhiều phép tính nhân chia mà
 
Upvote 0
Bạn yêu cầu code, do đó tôi nghĩ bạn đã biết cách chèn thêm 1 module trong VBE để copy cái function dưới đây vào:
Function f2t(r As Range) As String
Application.Volatile
If r.HasFormula Then f2t = r.Formula
End Function
Nhưng hàm trên chỉ diễn giải công thức theo cách công thức excel chứ không phải theo công thức số 1*2+3 như em yêu cầu
 
Upvote 0
Mình đang giải quyết vấn đề như sau:
Giá trị tại các ô: A1: 1; B1: 2; C1: 3
Tại ô D1 mình có công thức tính: =A1*B1+C1
Tại ô E1 mình có diễn giải công thức tại ô D1 là : =A1&"*"&B1&"+"&C1
Mình muốn có hàm hoặc code đưa kết quả chú thích tự động như tại ô D1 mà không phải làm thủ công tốn thời gian? Nhờ các bạn giúp đỡ, thanks!
Bạn dùng hàm này thử xem.
PHP:
Function GetF(Rng As Range) As String
Dim Str As String, i As Long, P As Long
If Not Rng(1, 1).HasFormula Then
    GetF = Rng(1, 1).Formula
Else
    Str = Rng(1, 1).Formula & "="
    GetF = "="
    P = 2
    For i = 2 To Len(Str)
        If InStr("=()+-*/%^", Mid(Str, i, 1)) Then
            If i > P Then GetF = GetF & Evaluate(Mid(Str, P, i - P))
            GetF = GetF & Mid(Str, i, 1)
            P = i + 1
        End If
    Next
    GetF = Left(GetF, Len(GetF) - 1)
End If
End Function
 
Upvote 0
Bạn dùng hàm này thử xem.
PHP:
Function GetF(Rng As Range) As String
Dim Str As String, i As Long, P As Long
If Not Rng(1, 1).HasFormula Then
    GetF = Rng(1, 1).Formula
Else
    Str = Rng(1, 1).Formula & "="
    GetF = "="
    P = 2
    For i = 2 To Len(Str)
        If InStr("=()+-*/%^", Mid(Str, i, 1)) Then
            If i > P Then GetF = GetF & Evaluate(Mid(Str, P, i - P))
            GetF = GetF & Mid(Str, i, 1)
            P = i + 1
        End If
    Next
    GetF = Left(GetF, Len(GetF) - 1)
End If
End Function
[/QUOTE
Đúng theo yêu cầu của mình rồi, cảm ơn bạn nhiều! từ nay công việc sẽ nhanh hơn nhiều!
 
Upvote 0
Cho mình hỏi thêm nhé: Nếu trong công thức tính có các phép tính toán học như sin, cos, số pi thì hàm trên bị lỗi, nhờ bạn khắc phục giúp mình! Thanks!
 
Lần chỉnh sửa cuối:
Upvote 0
Cho mình hỏi thêm nhé: Nếu trong công thức tính có các phép tính toán học như sin, cos, số pi thì hàm trên bị lỗi, nhờ bạn khắc phục giúp mình! Thanks!
Theo mình, với những dạng bài này, bạn nên đưa hết các kiểu dữ liệu & kết quả lên một lần để anh em có thể tìm một cách giải tổng quát, chứ bạn cứ hỏi nhỏ giọt như thế này rất khó cho anh em giải được trọn vẹn bài toán
Thân
 
Upvote 0
Theo mình, với những dạng bài này, bạn nên đưa hết các kiểu dữ liệu & kết quả lên một lần để anh em có thể tìm một cách giải tổng quát, chứ bạn cứ hỏi nhỏ giọt như thế này rất khó cho anh em giải được trọn vẹn bài toán
Thân
Thì do trong quá trình thực thi hàm mới phát sinh những cái mà mình không lường trước được, bạn huuthang_bd với hàm
GetF
giải quyết được yêu cầu với các phép toán cơ bản, nhưng đối với ô chứa công thức hàm như sin, cos , sum , round, pi()... thì hàm bị lỗi. Nhờ bạn khắc phục giúp mình.
 
Upvote 0
Cho mình hỏi thêm nhé: Nếu trong công thức tính có các phép tính toán học như sin, cos, số pi thì hàm trên bị lỗi, nhờ bạn khắc phục giúp mình! Thanks!
Giả sư trong công thức có hàm SUM (chẳng hạn SUM(A1:A10) ) thì sẽ diễn giải sao?
 
Upvote 0
Web KT
Back
Top Bottom