Board logo

標題: EXCEL VBA 由計算說明計算金額 [打印本頁]

作者: ML089    時間: 2012-9-4 20:13     標題: EXCEL VBA 由計算說明計算金額

EXCEL VBA 由計算說明計算金額

E欄為自訂之刪除字串(會再增加),用來刪除B欄計算說明中的字串,最後會變成計算式,再將計算式計算為C蘭的金額。
[attach]12365[/attach]

[attach]12366[/attach]

懇請協助,謝謝
作者: Hsieh    時間: 2012-9-4 20:27

回復 1# ML089
  1. Sub nn()
  2. For Each b In Range([B2], [B65536].End(xlUp))
  3.   mystr = b
  4.   For Each a In Range("E:E").SpecialCells(xlCellTypeConstants)
  5.     mystr = Replace(mystr, a, "")
  6.   Next
  7.   b.Offset(, 1) = Evaluate(mystr)
  8. Next
  9. End Sub
複製代碼

作者: ML089    時間: 2012-9-4 22:04

回復 2# Hsieh
感謝,經測試完全正確

是否可以再幫忙改為自定函數
例如我在 C2 輸入 =計算(B2) 就能計算出來
E欄的刪除字串我想放入自定函數中比較方便使用(因為有不同的格式要用才不用一直改程式),也麻煩預留刪除字串要擴充的空間,再次請託,感謝
作者: Hsieh    時間: 2012-9-4 22:20

回復 3# ML089
  1. Function MyCal(Mystr As String, Rng As Range) As Double
  2. For Each a In Rng
  3.   Mystr = Replace(Mystr, a, "")
  4. Next
  5. MyCal = Evaluate(Mystr)
  6. End Function
複製代碼
C2=mycal(B2,$E$2:$E$6)
作者: ML089    時間: 2012-9-4 23:05

回復 4# Hsieh

太棒了,自訂函數還是比較好用

最後再麻煩一下
如果沒有輸入第二參數時,可以用內定參數值  "斤","兩","蘋果","香蕉","沙蝦"
如能改成這樣就太完美了
先謝謝你
作者: Hsieh    時間: 2012-9-4 23:46

回復 5# ML089
  1. Function MyCal(Mystr As String, ParamArray MyStrList()) As Double
  2. For Each a In MyStrList
  3.   Mystr = Replace(Mystr, a, "")
  4. Next
  5. MyCal = Evaluate(Mystr)
  6. End Function
複製代碼

作者: ML089    時間: 2012-9-5 00:20

回復 6# Hsieh

謝謝回覆,但和我想要的有點不一樣,因為我不會改,希望再麻煩一下

如果沒有輸入第二參數時,可以用內定參數值  "斤","兩","蘋果","香蕉","沙蝦"

是指 第二參數仍是 RANGE
如 第二參數沒有輸入時( =MyCal(B2) ),刪除字串使用 FUNCTION內的一組參數陣列  "斤","兩","蘋果","香蕉","沙蝦" (寫在FUNCTION 裡面)
作者: Hsieh    時間: 2012-9-5 09:07

回復 7# ML089
  1. Function MyCal(Mystr As String) As Double
  2. MyStrList=Array("斤","兩","蘋果","香蕉","沙蝦")
  3. For Each a In MyStrList
  4.   Mystr = Replace(Mystr, a, "")
  5. Next
  6. MyCal = Evaluate(Mystr)
  7. End Function
複製代碼

作者: ML089    時間: 2012-9-5 09:58

回復 8# Hsieh

我想使用上還是以最後這方式比較簡單
感謝你的不厭其煩的協助

不知道要如何給你一個讚,或像Y+給你最佳回答
要如何CLOSE本問題?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)