=SUMIF(A1:D1,">0")*H1
用sumif函数
a1:d1 是要求和的区域
“>0"是区域中大于0的进行求和计算
*h1就是你要乘的数量
这个不知道符不符合你的要求
如果要用公式写,那就成拖拉机了。写了个拖拉机你试试吧(假设数据从A3开始,H3数组公式):
=SUM(IFERROR(--TRIM(MID(SUBSTITUTE(MID(A3,MIN(FIND(ROW($1:$9),A3&5^19)),MAX(ISNUMBER(--MID(A3,ROW($1:$99),1))*ROW($1:$99))-MIN(FIND(ROW($1:$9),A3&5^19))+1),"*",REPT(" ",99)),ROW($1:$99)*99-98,99)),))*G3
Sub test()
Dim arr() As String
Dim oRegExp As Object
Dim oMatches As Object
Dim iNum As Integer
Set oRegExp = CreateObject("vbscript.regexp")
Dim iRow As Integer
iRow = Sheets(1).UsedRange.Rows.Count
For ind = 3 To iRow
arr = Split(Sheets(1).Cells(ind, 1).Value, "*")
iNum = UBound(arr) - LBound(arr)
For i = 0 To iNum
With oRegExp
.Global = True
.IgnoreCase = True
.Pattern = "[0-9]+"
Set oMatches = .Execute(arr(i))
End With
Sheets(1).Cells(ind, i + 2).Value = oMatches(0)
Sheets(1).Cells(ind, 8).Value = Sheets(1).Cells(ind, 8).Value + CInt(oMatches(0))
Set oMatches = Nothing
Next
Next
End Sub
如果你的数据是按这样的位置,从A列,第三行放的,那么代码可以直接用。
根据你的这些数据,用 VBA 正则表达式比较合适。