在使用 OpenOffice 多年后,我刚刚重新使用 Microsoft Excel,但我仍然无法在 OpenOffice 中完成一些有用的操作。我希望我没有遗漏任何显而易见的事情。
我在工作簿中为每个月创建了工作表。在 1 月份的工作表中,我将有一个单元格,其中包含一个值。例如,A1 可能包含 15% 的佣金率。在 OpenOffice 中,我可以转到 2 月份的工作表,输入=Jan!a1
,然后复制该值,选择所有剩余月份的工作表并粘贴。然后,每个工作表将引用其前面的工作表。3 月份将引用 2 月份的工作表a1
,4 月份将引用a1
3 月份的工作表 ,等等。当我在 Excel 中执行相同操作时,每个工作表都将引用 1 月份的工作表。公式中没有绝对值$
。
我错过了什么?
答案1
选项 1:
Excel;研究使用ADDRESS()
来创建引用,该引用可用于INDIRECT()
实现您想要的工作表相对寻址。
选项 2:恢复到 LibreOffice,它显然与 OpenOffice 的功能相同。
答案2
在 Excel 本身中,您无法以相对方式引用其他工作表。必须为工作表提供一个名称。
但是,您可以使用 VBA 并编写一个 UDF 函数(必须将其放在标准模块中),该函数允许您创建对另一个工作表的相对引用。此代码的列表:
Function Ref(wks_ofs As Long, Optional adr As Variant)
Application.Volatile
If IsMissing(adr) Then
adr = Application.ThisCell.Address
ElseIf TypeName(adr) = "Range" Then
adr = adr.Address
ElseIf TypeName(adr) = "String" Then
If Len(adr) = 0 Then _
adr = Application.ThisCell.Address
End If
Dim id As Long
id = Application.ThisCell.Parent.Index + wks_ofs
If id < 1 Or id > Worksheets.Count Then
Ref = CVErr(xlErrRef)
Else
Ref = Worksheets(id).Range(adr).Value
End If
End Function
你称之为例如=Ref(-1)
或=Ref(-1, A3)
第一个参数(长整型)表示工作表编号的偏移量(-1 表示上一个工作表,0 表示当前工作表,1 表示下一个工作表)。第二个参数(引用或地址文本)指定我们要引用的地址。此参数是可选的,如果省略,则引用将与调用单元格相同的地址。