用vba解决excel问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:25:06
如图,如果A列当前单元格输入的字符等于A列上面的某一单元格的值(A5=A2),那么就把D2的数值抄到B5这里,怎么实现啊?
这里的第2行,第5行,这两个数字只是我随便举例的,可能是其他的行。
大概思想应该是这样的,在输入A5的值之后就马上在这一列往上找,找到第一个与它值相同的单元格,然后就把该行D列的值抄到B5这里来

D2输入

=sumif(a$1:a1,a2,b$1:b1)-sumif(a$1:a1,a2,c$1:c1)

向下填充即可

公式的意思就是 用公式所在行上方的所有该“编号”的“前余数”的和减去“扣减数”的和

=LOOKUP(A5,A2:A4,D2:D5)

不必用VBA

b5=if(countif(a$2:a4,a5),vlookup(a5,a$2:d4,4,0),"")

b5=index(d:d,max(if(a$1:a4=a5,row($1:4),0))) 下拉

要加上绝对引用
=LOOKUP(A5,$A$2:A4,$D$2:D5)

楼主要的VBA方法(用单元格内容改变的触发事件):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 2 Then '仅判断A列,从第二行后开始
Dim i As Long
For i = Target.Row To 2 Step -1
If Target = Cells(i, 1) Then
Cells(Target.Row, 2) = Cells(i, 4)
End If
Next i
End If
End Sub

试过OK且通用。