F列在B列中查找对应,且所在行中C列的数值大于G列,且最接近G列的数值.谢谢CCTV1102的回答,可是如果把C3 C4 C5单元格的数值改成1500的话就出现错误了~又有新的问题出现如果大于它且数值一样的
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 13:27:48
F列在B列中查找对应,且所在行中C列的数值大于G列,且最接近G列的数值.谢谢CCTV1102的回答,可是如果把C3 C4 C5单元格的数值改成1500的话就出现错误了~又有新的问题出现如果大于它且数值一样的
F列在B列中查找对应,且所在行中C列的数值大于G列,且最接近G列的数值.
谢谢CCTV1102的回答,可是如果把C3 C4 C5单元格的数值改成1500的话就出现错误了~
又有新的问题出现如果大于它且数值一样的没有数值返回,麻烦在看看
F列在B列中查找对应,且所在行中C列的数值大于G列,且最接近G列的数值.谢谢CCTV1102的回答,可是如果把C3 C4 C5单元格的数值改成1500的话就出现错误了~又有新的问题出现如果大于它且数值一样的
在H1输入:
=INDIRECT(ADDRESS(SUM((($C$1:$C$11-G1)=MIN(IF((($C$1:$C$11-G1>0)*($C$1:$C$11-G1))=0,"",(($C$1:$C$11-G1>0)*($C$1:$C$11-G1)))))*($B$1:$B$11=F1)*(ROW($A$1:$A$11))),1))
按ctrl+shift+enter下拉即可.
得到A列中的数据,
若需要得到C列的数据,请改为
=INDIRECT(ADDRESS(SUM((($C$1:$C$11-G1)=MIN(IF((($C$1:$C$11-G1>0)*($C$1:$C$11-G1))=0,"",(($C$1:$C$11-G1>0)*($C$1:$C$11-G1)))))*($B$1:$B$11=F1)*(ROW($A$1:$A$11))),3))
感谢提醒,漏了一个条件是:($B$1:$B$11=F1)即等于B这个关键词,所以最小值取错了.
公式改一下.
取A列
=INDIRECT(ADDRESS(SUM((($C$1:$C$11-G1)=MIN(IF((($C$1:$C$11-G1>0)*($B$1:$B$11=F1)*($C$1:$C$11-G1))=0,"",(($C$1:$C$11-G1>0)*($C$1:$C$11-G1)))))*($B$1:$B$11=F1)*(ROW($A$1:$A$11))),1)),按ctrl+shift+enter下拉即可.
取C列:
=INDIRECT(ADDRESS(SUM((($C$1:$C$11-G1)=MIN(IF((($C$1:$C$11-G1>0)*($B$1:$B$11=F1)*($C$1:$C$11-G1))=0,"",(($C$1:$C$11-G1>0)*($C$1:$C$11-G1)))))*($B$1:$B$11=F1)*(ROW($A$1:$A$11))),3)),按ctrl+shift+enter下拉即可.
第二种方法,VBA法.测试研究合格.
步骤:右键单击工具栏--控件工具箱--添加一个命令按钮CommandButton1,双击命令按钮,输入下列代码.
Private Sub CommandButton1_Click()
Dim i, j, k, m, n
Dim a, b
m = 9E+307
Dim c()
With Worksheets("sheet1")
.Range("I2:I65535").ClearContents
For i = 2 To .Range("f65535").End(xlUp).Row
a = .Cells(i, 6)
b = .Cells(i, 7)
m = .Range("A65535").End(xlUp).Row
ReDim c(m)
For j = 2 To m
If StrComp(.Cells(j, 2), a, vbTextCompare) = 0 And .Cells(j, 3) >= b Then
c(j) = .Cells(j, 3) - b
Else
c(j) = 9E+307
End If
Next j
For k = 2 To UBound(c)
If Application.WorksheetFunction.Min((c)) = c(k) Then
.Cells(i, 9) = .Cells(i, 9) & .Cells(k, 1)
End If
Next k
Next i
End With
End Sub
保存后,关闭VBE窗口,回到excel窗口,单击控件工具箱上的设计按钮.
然后单击CommandButton1即可得到结果.