EXCEL单元格,假如:当A1填入大于0的数值,B1自动填入0,当B1填入大于0的数值,A1自动填入0。

我怎么可以指定其中的任意两列,前面的回答只能实现从A列开始可以,我从c列输入数值,B列自动也填入0了。
A B C
0 0 10
50 0
10 0
25 0
0 35
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
If Target.Column > 3 Then
If VBA.IsNumeric(Target.Value) Then
If Target > 0 Then
If Target.Column = 1 Then
Target.Offset(0, 1) = 0
Else
Target.Offset(0, -1) = 0
End If
End If
End If
End If
End If
Application.EnableEvents = True
End Sub

你想要什么样的结果呢,

如果想要C列不参与计算,可以改成如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
    If Target.Column > 3 Then
        If VBA.IsNumeric(Target.Value) Then
            If Target > 0 Then
                If Target.Column = 1 Then
                    Target.Offset(0, 1) = 0
                Elseif target.column = 2 then
                    Target.Offset(0, -1) = 0
                End If
            End If
        End If
    End If
End If
Application.EnableEvents = True
End Sub

追问

我的意思是我要计算其中指定的l两列

追答

我是从你的代码中看出来的,
我不知道你指定的哪两列,或是如何指定的
也不知道你说的计算,是怎么计算。
既然什么都不知道,我似乎没办法写代码。

追问

EXCEL单元格,假如:当K1填入大于0的数值,J1自动填入0,当J1填入大于0的数值,K1自动填入0。如果不是第一列
不好意思我是试着学做表,我的意思是计算相邻的两列,好比J列和K列,当J列单元格我填入任意数字,K列就会自动填入数字0,K列和J列,当K列单元格我填入任意数字,J列就会自动填入数字0,任意的相邻两列,我不知道这样说清楚不。

追答

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
'If Target.Column > 3 Then
If VBA.IsNumeric(Target.Value) Then
If Target > 0 and target.row =1 Then '如果单元值大于0,且单元行标为1
If Target.Column = 10 Then '如果单元列标为10,也就是J列,注:A列为1,以此类推
Target.Offset(0, 1) = 0
Elseif target.column = 11 then '如果单元列标为11,也就是K列
Target.Offset(0, -1) = 0
End If
End If
End If
'End If
End If
Application.EnableEvents = True
End Sub

追问

还是不行,没有任何提示,但就是出不来0;能不能给个实例,谢谢。

追答

我明白了,这是个事件,你得放在对应表格代码位置

而且启用宏。

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-09
这个要求公式搞不定的,要用VBA的追问

End If
End If
End If
End If
Application.EnableEvents = True
End Sub
这个vba搞不定怎么修改?

追答

'就这样就行了
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
If Target.Column 0 Then
If Target.Column = 1 Then
Target.Offset(0, 1) = 0
Else
Target.Offset(0, -1) = 0
End If
End If
End If
End If
End If
Application.EnableEvents = True
End Sub

追问

还是不行

追答

怎么可能?

追问

还是不行,如果是第9列和第10列中的数字,能给个实例吗谢谢!

追答

If Target.Column > 8 and Target.Column<10 Then