将值从一个工作表复制到多个工作表

将值从一个工作表复制到多个工作表

在使用 OpenOffice 多年后,我刚刚重新使用 Microsoft Excel,但我仍然无法在 OpenOffice 中完成一些有用的操作。我希望我没有遗漏任何显而易见的事情。

我在工作簿中为每个月创建了工作表。在 1 月份的工作表中,我将有一个单元格,其中包含一个值。例如,A1 可能包含 15% 的佣金率。在 OpenOffice 中,我可以转到 2 月份的工作表,输入=Jan!a1,然后复制该值,选择所有剩余月份的工作表并粘贴。然后,每个工作表将引用其前面的工作表。3 月份将引用 2 月份的工作表a1,4 月份将引用a13 月份的工作表 ,等等。当我在 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 表示下一个工作表)。第二个参数(引用或地址文本)指定我们要引用的地址。此参数是可选的,如果省略,则引用将与调用单元格相同的地址。

相关内容