Excel 单元格共享相同的基础数据

问题描述 投票:0回答:1

我想知道是否有人知道在 Excel 中实现以下行为的方法。

  • 您有两个单元格,例如 A4 和 B6
  • 每当用户在 A4 中输入一个值时,B6 中就会出现相同的值
  • 每当用户在 B6 中输入一个值时,A4 中就会出现相同的值
  • 如果用户输入值,行为不会改变。 用户可以在一个或两个单元格中任意多次输入值,并且它始终会出现在另一个单元格中
  • 即使关闭自动计算,其他单元格的更新也是即时的
  • 一般来说,单元格 A4 和 B6 始终具有相同的值,并且每当用户在任一单元格中输入值时,相同的值就会出现在另一个单元格中
  • 换句话说,两个单元格共享相同的底层数据

更一般地说:

  • 希望能够链接任意数量的可以跨越不同工作表的单元格,以便更新其中任何一个单元格即可立即更新所有单元格

我的用例不需要输入公式,用户只需要输入固定值。 但如果这样的功能确实存在并且确实允许使用公式,那么我希望公式具有适当的相对性。 即,如果您在 A4 中输入“=A3+1”,则公式在 B6 中显示为“=B5+1”。

对任何涉及设置单独的输入/输出单元格之类的解决方法不感兴趣(也不会接受),或者用户必须执行除以正常方式在单元格中输入值之外的任何操作。 宏观解决方案是不可取的,但可能是可以接受的。

谷歌搜索,没有发现任何相关内容。 (这很难,因为我被如何进行字符串连接的结果淹没了。)

excel
1个回答
0
投票

工作表更改:使用更改的值填充

  • 左:
    A3
    更改为
    1
  • 右:
    C7
    更改为
    2

enter image description here

  • 无需运行任何内容,即此代码会在给定范围内的每次更改时自动运行。
  • 最好关闭所有工作簿并添加新工作簿。右键单击所需工作表的选项卡,然后选择“查看代码”。将以下代码复制到 Visual Basic Editor 中打开的窗口中。关闭 Visual Basic Editor 并开始测试代码。如果您对功能感到满意,请将工作簿另存为 .xlsm
    .xlsb
    文件。在您想要的工作簿中应用相同的内容。
    
    
工作表模块,例如

Sheet1


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    PopulateWithChangedValue Target, "A3,B5,C7,D9"
End Sub

Sub PopulateWithChangedValue( _
        ByVal Target As Range, _
        ByVal RangeAddress As String)
    Const PROC_TITLE As String = "Populate With Same Value"
    On Error GoTo ClearError
        
    Dim srg As Range: Set srg = Target.Worksheet.Range(RangeAddress)
    Dim trg As Range: Set trg = Intersect(srg, Target)
    If trg Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
    srg.Value = trg.Cells(1).Value

ProcExit:
    On Error Resume Next
        Application.EnableEvents = True
    On Error GoTo 0
    Exit Sub
ClearError:
    MsgBox "Run-time error '" & Err.Number & "':" & vbLf & vbLf _
        & Err.Description, vbCritical, PROC_TITLE
    Resume ProcExit
End Sub

	
© www.soinside.com 2019 - 2024. All rights reserved.