Excel当单元格A1等于1时单元格B1可以输入任何值,当单元格A1不等于1时单元格B1等于0

Excel当单元格A1等于1时单元格B1可以输入任何值,当单元格A1不等于1时单元格B1等于0

第1个回答  推荐于2017-09-05

这种问题应该不能用公式来实现,只能通过VBA,写代码来实现。

下面的是我写的一段代码:你可以复制到VBA中

模块中的代码:


Sub aa(myCells As Range)
If myCells.Count <> 1 Then GoTo myend
If myCells.Column = 1 Then
    If myCells.Value = 1 Or myCells.Value = "" Then
    Cells(myCells.Row, myCells.Column + 1) = ""
    Else
    Cells(myCells.Row, myCells.Column + 1) = 0
    End If
End If
myend:
End Sub

Sub bb(myCells As Range)
If myCells.Count <> 1 Then GoTo myend
If myCells.Column = 2 Then
    If Cells(myCells.Row, myCells.Column - 1).Value <> 1 Then Cells(myCells.Row, myCells.Column - 1).Select
End If
myend:
End Sub


然后在工作表事件中调用上面的代码。如:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call bb(Target)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Call aa(Target)
End Sub

追问

辛苦你了,然而我却不会弄

追答

打开宏编辑器
在宏编辑器左则的窗格中右键——》插入——》模块
该空格中就出现 一个 模块 项目,双击模块,在左侧的窗格中打开该模块的编辑窗格
复制第一个代码 到模块的编辑空格中

再在左则的窗格中双击sheet1,在左侧的[窗格中打开sheet1的编辑窗格
复制第二个代码 到Sheet1的编辑空格中

这样你在sheet1中可以得到你想要的功能了。
如果你想在其它的sheet中也实现该功能。你就用上面的的办法,把第二个代码块复制到相应的sheet编辑窗格就可以了。

追问

呵呵,弄不好,辛苦了

呵呵,弄不好,辛苦了

本回答被提问者采纳
第2个回答  2017-09-05

这个要用VBA。

在工作表标签(左下角,如Sheet1)单击鼠标右键,选“查看代码”,在代码窗口粘贴下列代码即可:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        If Cells(1, 1) = 0 Then
            Cells(1, 2) = 0
        Else
            If Cells(1, 1) <> 1 Then
                Cells(1, 2) = ""
            End If
        End If
    End If
End Sub

第3个回答  2015-07-03
在你需要的单元格里输入,if(a1=1,b1,0)追问

大神,请教一下输在哪个单元格呢?如果输在B1有点冲突

第4个回答  2015-07-03
在b1单元格设置数据有效性追问

请教一下设置详情

追答

选中b1找到数据验证,进行如下设置。如果解决问题,望及时采纳,谢谢

追问

大神辛苦了,我试了一下,A1为1时B1是可以输入任何值,但是A1不为1时,B1不会变为0,只是限制输入,不知大神是否还有别的方法

追答

亲,在设置b1单元格之前,你先在单元格内输入0.,,我亲自试过,肯定没问题啊

追问

大师你可能理解错了,我的意思是b1在使用过后不管单元格是什么数字什么内容,在a1改变不为1的情况下,b1又会自动变为0