如果在工作表的任何其他列中找到特定值,我需要找到F列中找到的数字的平均值。
例如:我在一个范围内有以下内容......
A B C D E F
在这个工作表中,我想找到名称Bill的任何实例,并获得在F列中找到的数字的平均值。在这种情况下,275的答案因为Bill的名字显示在两行中。同样,如果我选择查看Ted的数字,答案应该是258,因为Ted的名字显示在三行中。
如果公式在计算答案的过程中忽略任何空白单元格,我也会感激。
提前致谢!
答案 0 :(得分:0)
假设查找值(Bill等)在单元格C7中,在G1中添加以下公式,然后向下复制其他行。
=IF(ISERROR(MATCH($C$7,A1:E1,0)),"",F1)
然后做
=AVERAGE(G1:G4)
答案 1 :(得分:0)
我会使用下面的函数,假设数据放在<div class="flex">
<div>1</div>
<div>2</div>
<div class="pancakes">3</div>
</div>
。
Sheet1
测试:
将Function my_average(strName As String) As Variant
Dim varArrayNames As Variant
Dim varValues As Variant
Dim dblInSum(1 To 4) As Double '~~> change to "1 To 40"
Dim lngCnt As Long
Dim strRow As String
Dim dblSum As Double
varArrayNames = Sheet1.Range("B1:E4").Value '~~> change to "B1:G40"
varValues = Sheet1.Range("F1:F4").Value '~~> change to "H1:H40"
For lngCnt = LBound(varArrayNames, 1) To UBound(varArrayNames, 1)
strRow = Join(WorksheetFunction.Index(varArrayNames, lngCnt, 0))
If InStr(strRow, strName) > 0 Then
dblInSum(lngCnt) = 1
End If
Next lngCnt
dblSum = WorksheetFunction.Sum(dblInSum)
If dblSum > 0 Then
my_average = WorksheetFunction.SumProduct(dblInSum, Application.Transpose(varValues)) / dblSum
Else
my_average = 0
End If
End Function
放在任何工作簿中(或单元格引用而不是“Bill”)。
结果:
答案 2 :(得分:-1)
因此,如果Bill在任何col-e-e中这个数字正在进入大街......如果是这样,取决于你的数据大小,为什么不这样做呢......:
Sub simplesearch()
cnt = 0
tot = 0
srchval = InputBox("What are we looking for?")
lr = Range("A1000000").End(xlUp).Row
For i = 1 To lr
For j = 1 To 5
If Cells(i, j).Value = srchval Then
tot = tot + Cells(i, 6).Value
cnt = cnt + 1
End If
Next j
Next i
If Not (cnt = 0) Then
MsgBox (tot / cnt)
Else
MsgBox ("0")
End If
End Sub