簡體   English   中英

Excel計算后綴

[英]Excel calculation suffix

我有一張3個側面尺寸的包裝紙。 尺寸欄

有沒有辦法獲得這些尺寸的乘積值? 有數百行,手動將花費太多時間。

謝謝。

或編寫一個簡單的UDF對字符串進行評估。 如果將數據設置為表格,則UDF將自動填充所需的任意多行。

在標准模塊中

Option Explicit

Public Function GetSum(ByVal myRange As Range) As Long
    GetSum = Evaluate(myRange.Value)
End Function

輸出量

這里討論了類似的想法:

https://superuser.com/questions/253353/excel-function-that-evaluates-a-string-as-if-it-were-a-formula

還有一個快速而骯臟的版本,您可以在其中指定分隔符,例如“ *”或其他用於分隔數字的內容

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

沒有VBA

數據在A1中 ,在B1中輸入:

=TRIM(MID(SUBSTITUTE($A1,"*",REPT(" ",999)),999-998,999))*TRIM(MID(SUBSTITUTE($A1,"*",REPT(" ",999)),2*999-998,999))*TRIM(MID(SUBSTITUTE($A1,"*",REPT(" ",999)),3*999-998,999))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM