iT邦幫忙

0

如何用VBA自動運算文字串公式

小弟我有寫一些運算式,但貼過來運算的那頁面必須是文字串公式
但無論怎樣寫VBA語法都無法自動運算,希望高手可以教一下
Ex. A1 = if(and(A2>A3,B3<=B2),"O","X"))
因為有很多列類式的文字串公式,因此希望可以用VBA自動運算

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
小魚
iT邦大師 1 級 ‧ 2019-11-19 22:08:49

第一步驟,
先借一本書來實作研究一遍,
應該就會有概念了.

看更多先前的回應...收起先前的回應...

老師!! 這題怎麼寫 (舉手/images/emoticon/emoticon37.gif

小魚 iT邦大師 1 級 ‧ 2019-11-19 22:23:39 檢舉

阿展展展
請來我的補習班上課學習.

老師老師 請問善良的人是不是都樂於助人 (純潔閃亮亮眼

小魚 iT邦大師 1 級 ‧ 2019-11-19 23:14:39 檢舉

阿展展展
我一直都覺得你很善良,
我最近缺錢,
麻煩你了. (口連閃閃發亮

chengwen iT邦新手 5 級 ‧ 2019-11-20 00:18:37 檢舉

我看了很多文章跟書,都沒有寫到要如何自動計算Excel 中的文字串公式,不知道小魚大師能不能教一下

小魚 iT邦大師 1 級 ‧ 2019-11-20 08:13:39 檢舉

其實說真的,
不是很了解你的需求...

chengwen iT邦新手 5 級 ‧ 2019-11-20 18:27:38 檢舉
小魚 iT邦大師 1 級 ‧ 2019-11-21 08:57:19 檢舉

這是原本的資料
https://ithelp.ithome.com.tw/upload/images/20191121/20105694msEfWesrNK.png
這是公式,

Private Sub test()
    For i = 2 To 6
        Cells(i, 2) = Evaluate(Cells(i, 1).Value)
    Next
End Sub

執行之後就變這樣.
https://ithelp.ithome.com.tw/upload/images/20191121/20105694DC2R8c8yWP.png

chengwen iT邦新手 5 級 ‧ 2019-11-23 17:26:56 檢舉

謝謝小魚大師的解惑,如果運算字串改成
If判斷式就無法使用該方法,不知道小魚大師有沒有其他解法呢??
拜託教教小弟

小魚 iT邦大師 1 級 ‧ 2019-11-23 17:39:10 檢舉

好像真的會出錯,
不過如果你公式都列出來了,
那就直接等於就好了,
為什麼要用VBA呢?

chengwen iT邦新手 5 級 ‧ 2019-11-23 18:13:30 檢舉

因為在做資料統計,用VBA希望能實現自動分析執行而不用半自動的執行他,現在只差這個尚未解決。小魚大師 拜託教教小弟

小魚 iT邦大師 1 級 ‧ 2019-11-23 19:13:51 檢舉

公式才會自動執行吧,
VBA還要按個按鈕之類的觸發事件.

0
paicheng0111
iT邦大師 5 級 ‧ 2019-11-19 23:12:31

你可以試試看

Range("A1").Formula = "=if(and(A2>A3,B3<=B2),""O"",""X""))"

如果你有1000個文字串公式:

Range("A1:A1000").FormulaR1C1 = "=if(<condition>, <true>, <false>)"
chengwen iT邦新手 5 級 ‧ 2019-11-20 00:17:12 檢舉

這種寫法我會,
但我有一千個文字串公式,都要這樣寫嗎?
希望能用VBA自動運行Excel某一種公式文字串,而不是在VBA帶入公式計算

0
Neish
iT邦研究生 1 級 ‧ 2019-11-20 08:05:05

Ex. A1 = if(and(A2>A3,B3<=B2),"O","X"))
因為有很多列類式的文字串公式,因此希望可以用VBA自動運算

內文我看不出公式的邏輯跟規則是什麼

我只能單就這行改寫成VBA語法
A1 = if(and(A2>A3,B3<=B2),"O","X"))

參考如下

Sub test()

    If (Range("A2") > Range("A3") And Range("B3") <= Range("B2")) Then
        Range("A1") = "O"
    Else
        Range("A1") = "X"
    End If
    
End Sub

如果你有很多類似的公式 應該可以加個FOR迴圈來實現

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-11-20 10:20:54

可以試試看Evaluate
自己改改看可不可以用

選我正解

我要發表回答

立即登入回答