Excel:如何将用户定义的函数应用于多个元素,然后对它们求和?
我要做的是只对选择中的所有元素应用我自己的函数数字,然后求和 使用数组函数,您可以执行以下操作Excel:如何将用户定义的函数应用于多个元素,然后对它们求和?,excel,vba,Excel,Vba,我要做的是只对选择中的所有元素应用我自己的函数数字,然后求和 使用数组函数,您可以执行以下操作 {=SUM(SQRT(A2:A10))} 对所选内容的所有平方根求和。我想做的是用我自己的函数有效地替换SQRT。具体来说,我希望能有这样的东西 {=SUM(PRODUCT(onlyDigits(A2:A10), B2:B10))} 它只对每个元素执行数字运算,将其乘以下面的一个,然后将其添加到总和中,表示一个单元格中的最终总和 我的函数onlyDigits接受它的输入(一个单元格)并只从中检索数
{=SUM(SQRT(A2:A10))}
对所选内容的所有平方根求和。我想做的是用我自己的函数有效地替换SQRT。具体来说,我希望能有这样的东西
{=SUM(PRODUCT(onlyDigits(A2:A10), B2:B10))}
它只对每个元素执行数字运算,将其乘以下面的一个,然后将其添加到总和中,表示一个单元格中的最终总和
我的函数onlyDigits接受它的输入(一个单元格)并只从中检索数字,因此不仅接收数字输入可能会有问题(但我不确定,因此我在这里)。这是来源,我是从另一个问题复制过来的:
Function onlyDigits(s As String) As String
' Variables needed (remember to use "option explicit"). '
Dim retval As String ' This is the return string. '
Dim i As Integer ' Counter for character position. '
' Initialise return string to empty '
retval = ""
' For every character in input string, copy digits to '
' return string. '
For i = 1 To Len(s)
If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
retval = retval + Mid(s, i, 1)
End If
Next
' Then return the return string. '
onlyDigits = retval
End Function
函数仅将数字(作为字符串)作为字符串
'需要变量(记住使用“选项显式”)。'
Dim retval As String“这是返回字符串。”
Dim i为整数“字符位置计数器”
'将返回字符串初始化为空'
retval=“”
'对于输入字符串中的每个字符,将数字复制到'
“返回字符串。”
对于i=1到Len(s)
如果Mid(s,i,1)>=“0”和Mid(s,i,1),则需要返回一个数组:
Function onlyDigits(s As Range) As Variant()
' Variables needed (remember to use "option explicit"). '
Dim retval() As Variant ' This is the return string. '
Dim i As Integer ' Counter for character position. '
' Initialise return string to empty '
ReDim retval(1 To s.Cells.Count)
' For every character in input string, copy digits to '
' return string.
For j = 1 To s.Cells.Count '
For i = 1 To Len(s(j))
If IsNumeric(Mid(s(j), i, 1)) Then
retval(j) = retval(j) + Mid(s(j), i, 1)
End If
Next i
retval(j) = CLng(retval(j))
Next j
' Then return the return string. '
onlyDigits = retval
End Function
返回的数组是水平的,因此需要对其进行转置:
=SUMPRODUCT(TRANSPOSE(onlyDigits(A1:A5)),B1:B5)
需要使用Ctrl-Shift-Enter键输入数组
我不太清楚,为什么函数是字符串?你不想返回某种数值吗?不应该是长的
或双的
?您所说的“不仅接收数字输入”是什么意思?你能提供更多的信息吗?例如工作表中的数据样本,以及如何应用此函数
?还有,预期的结果是什么?