[英]Excel calculation suffix
或編寫一個簡單的UDF對字符串進行評估。 如果將數據設置為表格,則UDF將自動填充所需的任意多行。
在標准模塊中
Option Explicit
Public Function GetSum(ByVal myRange As Range) As Long
GetSum = Evaluate(myRange.Value)
End Function
這里討論了類似的想法:
還有一個快速而骯臟的版本,您可以在其中指定分隔符,例如“ *”或其他用於分隔數字的內容
Public Function GetSum2(ByVal myRange As Range, ByVal delimiter As String) As Long
Dim myArr() As String
myArr = Split(myRange.Value, delimiter)
Dim outputValue As Long
outputValue = 1
Dim i As Long
For i = LBound(myArr) To UBound(myArr)
outputValue = outputValue * CLng(myArr(i))
Next i
GetSum2 = outputValue
End Function
Evaluate函數可以正常工作,但是需要一些步驟才能使它起作用,您不能像= Evaluate($ A1)那樣將其放入單元格中,您需要首先設置一個命名范圍
選擇單元格B1
轉到“公式”選項卡,然后單擊“定義名稱”
在對話框中,輸入類似於“結果”的名稱
在“引用”框中,放入公式= Evaluate($ A1)
單擊確定,現在在B1中鍵入= Result
您可以將其向下拖動到所有單元格。
如果您始終有3位數字,則此數組公式將起作用(請記住,您需要按[Ctrl] + [Shift] + [Enter]從公式轉換為數組公式)
=PRODUCT(0+(MID(B1,1+(4*(ROW(OFFSET($A$1,0,0,1+LEN(B1)-LEN(SUBSTITUTE(B1,"*","")),1))-1)),3)))
令人討厭的是, MID
不適用於SUMPRODUCT
數組,因此這必須是正確的數組公式:(
B1
是包含數字的單元格, $A$1
只是為了確保我們提取出足夠的3位數字(將其保留在第1行!),並且"*"
應該是分隔符
另外一個選項:
=PRODUCT(--TRIM(MID(SUBSTITUTE($A1,"*",REPT(" ",999)),(ROW(1:3)-1)*999+1,999)))
作為使用Ctrl-Shift-Enter而不是Enter的數組公式。
這里最簡單的選項可能是將當前工作表另存為CSV文本文件。 然后使用屏幕截圖中的菱形符號作為分隔符重新導入該文件。 這會將三個值中的每一個放在單獨的列中。 一旦達到這一目標,就可以簡單地采用三列的乘積。
試試這個代碼:
Sub CalculateVolumes()
Dim column As Long, lastRow As Long, i As Long, number As Variant, volume As Long
column = 1 'A column
lastRow = Cells(Rows.Count, column).End(xlUp).Row
For i = 1 To lastRow
volume = 1
For Each number In Split(Cells(i, column).Value, "*")
volume = volume * number
Next
'column + 1 means that I will put calculated volume next to the cell
Cells(i, column + 1).Value = volume
Next
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.