🗂

Excelで文字列計算できるVBA関数(CalcText)

に公開

Excelで文字列計算をしたいと思ったことありませんか?
数量計算書とか? 構造計算書とか? ”×” ”÷” ”√” 計算して欲しいなー
昔は、「TXTCALC」を使っていましたが 現在、使えない環境で困っていたとき
無料で簡単に導入できるので、ぜひ試してみてください。

1.「TXTCALC」の代替えがあるのか
 調べてみましたが、色々 ありました。
しかし、有料だったり、自己責任で...って
同じ自己責任なら、自分で作ってみようかな

2.VBAで関数を自作
 ・四則計算+√+π+%+累乗対応・・・コードで追加可能
 ・不正文字チェック機能も追加

3.コードは、こんな感じ

Function CalcText(txt As String) As Variant
    Dim expr As String, i As Long, ch As String
    Dim invalidChars As String
    On Error GoTo ErrHandler
    If Trim(txt) = "" Then
        CalcText = ""
        Exit Function
        
    End If
    expr = StrConv(txt, vbNarrow)
    expr = Replace(expr, "×", "*")
    expr = Replace(expr, "*", "*")
    expr = Replace(expr, "÷", "/")
    expr = Replace(expr, "/", "/")
    expr = Replace(expr, "−", "-")
    expr = Replace(expr, "π", "3.14159265358979")
    expr = Replace(expr, "√", "SQRT(")
    expr = Replace(expr, "%", "/100")
    
    invalidChars = ""
    For i = 1 To Len(expr)
        ch = Mid(expr, i, 1)
        If InStr("0123456789+-*/().^", ch) = 0 Then
            If InStr(invalidChars, ch) = 0 Then
                invalidChars = invalidChars & ch & " "
            End If
        End If
    Next i
    
    If invalidChars <> "" Then
        CalcText = "不正な文字があります: " & Trim(invalidChars)
        Exit Function
    End If
    
    CalcText = Evaluate(expr)
    Exit Function
    
ErrHandler:
    CalcText = CVErr(xlErrValue)
End Function

4.導入手順
 (1) Alt + F11 → VBAエディター
 (2) 標準モジュールに貼り付け
 (3) .xlsmで保存
 (4) マクロ有効化

5.使い方とサンプル
 式のセル 1/2(3+2)×4  答えのセル =CalcText(式のセル)

6.ファイルの保存
 「名前を付けて保存」→ **Excelマクロ有効ブック(.xlsm)**を選択。
 ファイル名例:CalcText.xlsm

7.ファイルを開く時
 ファイルを開いたら、上部に黄色のバーが出ます。
 **「コンテンツの有効化」**をクリック。

8.まとめ
 無料でできる
 TXTCALCの代替として使える
 他人と共有するなら、READMEを添付して「マクロを有効化してください」と伝えればOK!

TXTCALCに代わる計算書ができるでー
ほいたらねー

Discussion