Excel:根据单元格B的输入自动覆盖单元格A

时间:2019-01-04 12:42:45

标签: excel vba excel-vba excel-formula exception-handling

寻找一种解决以下情况的方法:

enter image description here

当Input1 = R时,我正在寻找它用valueX覆盖Output中的任何内容,但是,当Input1不= R时,我希望能够使用自由选择键入单元格。

通过一些聪明的数据验证可能吗?我知道可以通过vba完成此操作,但是如果可能的话,请尽量避免这种情况,因为这会发送给可能需要进行编辑并且对vba不确定的其他各方。

感谢任何建议!

2 个答案:

答案 0 :(得分:0)

好吧想不到Non-VBA解决方案,所以也许社区会想一想,肯定有可能。

非常感谢,VBA解决方案不是很多代码,所以也许会有帮助。

将其添加到该数据所在的工作表后面的代码中(不要添加到标准模块中)。我假设此数据在A和B列中。如果不正确,只需将Target.Column = 1更改为Input1所在的列。另外,我假设您将在第2行开始替换,而不替换标题。

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 1 And Target.Row > 1 And LCase$(Target.Value) = "r" Then Target.Offset(0, 1).Value = "X"
    Application.EnableEvents = True
End Sub

答案 1 :(得分:0)

OverWrite单元专长。案例问题

更改常量部分中的值以适合您的需求。 将以下代码粘贴到工作表代码窗口中(在VBA中,双击“ Sheet1”)。

代码

Option Explicit
'*******************************************************************************
' Purpose:    Writes a string to a column in the same row where another
'             string was entered in (copied to) another column.
'*******************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)

    Const cStrRange As String = "A:A"   ' If Column Range Address
    Const cStrSource As String = "R"    ' If String (Upper Case)
    Const cStrTarget As String = "X"    ' Then String
    Const cIntOffset As Integer = 1     ' Then Column Offset (1 for Next Column)

    ' Each Cell Range i.e. each cell of the range at the intersection
    ' of the If Column Range and the Target's range.
    Dim objCell As Range

    Application.EnableEvents = False
    On Error GoTo ProcedureExit

    If Not Intersect(Target, Range(cStrRange)) Is Nothing Then
        For Each objCell In Intersect(Target, Range(cStrRange))
            If UCase$(objCell) = cStrSource Then
                objCell.Offset(0, cIntOffset) = cStrTarget
            End If
        Next
    End If

ProcedureExit:
    Application.EnableEvents = True
End Sub
'*******************************************************************************