我正在尝试使用公式来告诉我包含数字和字母的单元格的平均值。
Price
$486.5/mt,
$287/mt,
$286.75/mt,
$286.5/mt,
$286.75/mt,
所以每个单元格包含上面的一个,例如单元格F2包含'$ 486.5 / mt'。我的问题是我可以使用什么公式来返回数字平均值。目前,平均公式甚至不起作用。我尝试使用“LEFT”公式,但这不起作用,因为$符号在值之前。
请帮忙!
由于
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用此功能:
Public Function NumbersOnly(str As String) As Single
Dim c As String
Dim nIndex As Integer
Dim sResult As String
For nIndex = 1 To Len(str)
If IsNumeric(Mid$(str, nIndex, 1)) Or Mid$(str, nIndex, 1) = "." Then
sResult = sResult & Mid$(str, nIndex, 1)
End If
Next
NumbersOnly = Val(sResult)
End Function
然后单元格F3
的公式为:
=NumbersOnly(F2)
答案 2 :(得分:0)
采用与braX类似的方法,此函数将显式转换预定义格式的字符串($ ... / ...),这将防止格式不正确(或其他无效)字符串的任何问题。这样可以更好地控制回报。
Public Function GetAmountFromString(ByVal InputString As String) As Variant
If InputString Like "$*/*" Then
Dim ProcessedString As String
ProcessedString = Replace(InputString, "$", vbNullString)
Dim SplitString As Variant
SplitString = Split(ProcessedString, "/")
' Explicitly convert String to Currency.
GetAmountFromString = CCur(SplitString(0))
Else
GetAmountFromString = vbNullString
End If
End Function
此功能将首先检查格式。只要输入格式正确,它就会用空字符串替换'$'符号。最后,它将使用'/'将字符串分成两部分。它将在'/'符号前返回Currency
版本的值。
如果输入不正确,它将返回一个空字符串。这可以根据需要进行自定义(您可以将vbNullString
替换为"ThisIsAnInvalidInput"
,它仍可以正常使用。
要使用此功能,请将其添加到VBProject,然后使用工作表中的=GetAmountFromString(Cell)
功能。
您也可以在其他子程序中使用此函数(例如,如果您想在子程序中使用仅平均有效值的函数)。