返回列表 上一主題 發帖

[發問] 如何分截取字串(長、寬、高)

[發問] 如何分截取字串(長、寬、高)

大家好,想請教各位是否有辦法縮短我以下的公式?

A欄位的字串是「數值*數值*數」,數值分別代表長度*寬度*高度。
如果我要求算A欄位字串中「長+寬+高」數值。我只會使用較長的函數分解後再加上
公式 =LEFT(A2,FIND("*",A2)-1)+MID(A2,FIND("*",A2)+1,FIND("*",A2,FIND("*",A2)+1)-(FIND("*",A2)+1))+MID(A2,FIND("*",A2,FIND("*",A2)+1)+1,10)
可是這樣的公式很長,是否有辦法再縮短呢?
謝謝大家!
分解字串-長寬高.zip (8.83 KB)

SUM(MID(SUBSTITUTE(A2,"*",REPT(" ",99)),{1,2,3}*99-98,99)*1)

PRODUCT(MID(SUBSTITUTE(A2,"*",REPT(" ",99)),{1,2,3}*99-98,99)*1)
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 2# hcm19522

原來可以用空字串代替的方法來取得數值,函數的運用真得是千變萬化,感謝 hcm 大大又教了我一課!:D

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列,學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, A, i&, j%, T$, xA As Range
'↑宣告變數
Set xA = Range([F1], [A65536].End(3))
'↑令xA變數是A~F欄儲存格
xA.Offset(1, 1).ClearContents: Brr = xA
'↑令xA變數向下向右各偏移1的範圍儲存格清除內容,
'令Brr變數是 二維陣列,以xA變數(儲存格)值帶入陣列中

For i = 2 To UBound(Brr)
'↑設順迴圈
   T = Brr(i, 1): A = Split(T, "*")
   '↑令T變數是 第1欄陣列值,
   '令A變數是 以"*"符號分割 T變數的一維陣列

   For j = 0 To 2: Brr(i, j + 2) = A(j): Next
   '↑設順迴圈!將A陣列值寫入Brr陣列裡
   Brr(i, 5) = Evaluate(Replace(T, "*", "+"))
   '↑令Brr第5欄陣列值是 (T變數置換 "*" 為 "+"後的新字串,
   '再將此字串以Evaluate方法計算成數值)

   Brr(i, 6) = Evaluate(T)
   '↑令Brr第6欄陣列值是 (T變數以Evaluate方法計算成數值)
Next
xA = Brr
'↑令Brr陣列值寫入xA變數中(儲存格)
Set xA = Nothing: Erase Brr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題