平均只有数字部分的单元格,避免任何字母

我正在尝试使用一个公式来告诉我一个包含数字的单元格的平均值,还包括字母。

Price $486.5/mt, $287/mt, $286.75/mt, $286.5/mt, $286.75/mt, 

因此,每个单元格包含上述之一,例如单元格F2包含“$ 486.5 / mt”。 我的问题是我可以使用什么公式来返回数字平均值。 现在,平均公式甚至工作都不起作用。 我尝试使用“左”的公式,但不会工作,因为$符号之前的价值。

请帮忙!

谢谢

你可以在不使用VBA的情况下使用这样的数组公式 :

 =AVERAGE(VALUE(MID(K18:K22,2,LEN(K18:K22)-5))) 

(K18:K22中的值)

你可以使用这个function:

 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)

对braX采取类似的方法,该函数将显式地转换预定义格式($ … / …)的string,这将防止格式不正确(或无效)string的任何问题。 这样可以更好地控制回报。

 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 

该function将首先检查格式。 只要input的格式正确,它就会用空stringreplace'$'符号。 最后,它将使用“/”将string分成两部分。 它将在'/'符号之前返回Currency版本的值。

如果input不正确,它将返回一个空string。 这可以根据需要自定义(可以用"ThisIsAnInvalidInput"replacevbNullString ,它仍然可以正常工作。

要使用此函数,将其添加到您的VBProject,然后在工作表中使用函数=GetAmountFromString(Cell)

你也可以使用其他子程序的这个function(例如,如果你想在一个子程序中使用平均有效值的function)。