我想知道是否有人知道在 Excel 中实现以下行为的方法。
更一般地说:
我的用例不需要输入公式,用户只需要输入固定值。 但如果这样的功能确实存在并且确实允许使用公式,那么我希望公式具有适当的相对性。 即,如果您在 A4 中输入“=A3+1”,则公式在 B6 中显示为“=B5+1”。
对任何涉及设置单独的输入/输出单元格之类的解决方法不感兴趣(也不会接受),或者用户必须执行除以正常方式在单元格中输入值之外的任何操作。 宏观解决方案是不可取的,但可能是可以接受的。
谷歌搜索,没有发现任何相关内容。 (这很难,因为我被如何进行字符串连接的结果淹没了。)
A3
更改为1
。C7
更改为2
。.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