在LibreOffice Calc中以全局文档为基础,在同一文档内的其他工作表上的单元格中复制数据

时间:2016-12-28 15:55:08

标签: libreoffice-calc

我需要一个公式,允许我将我在主页中插入的数据复制到我最初输入的特定名称所标识的每张纸上。例如,我有一个主员工表,我保存所有员工的记录,然后我为每个员工单独设置一个表,它将复制在一般表中输入的数据。我需要公式来检查是否满足名称条件,然后将在一般工作表中输入的数据附加到最后一个填充行之后的空行中的单个员工工作表。因此,我不需要将每个员工的行从主表复制到单个表。这需要动态完成,因此我不需要在每个相应的单元格中输入公式。如果我使用正确的术语,我认为它是一个全球文档公式。我希望公式能够在我输入条件中包含的名称时自动待机并检测,然后在正确的位置生成与我输入的名称相关的数据复制。

我认为这将涉及引用和条件格式的组合。

  • 在主员工表中使用条件格式来确定输入的名称以及在各个员工表上复制它的位置。
  • 主员工表的参考在每个员工表中定义。

由于我无法上传附件,因此我在此处粘贴电子表格中的数据。

主要员工表

Name              Age      Date of birth  Address               Pay date    Hourly wage Total Pay
Sally Grilmers     35       11/05/78      1254 Hickory Dr.      12/31/2012  15.35       2410.54
Jacob Miltisworth  28       05/23/88      2657 Jensons Ave.     12/31/2012  14.29       2105.42
Martin Flemings    43       01/11/64      5342 Landers St.      12/31/2012  17.58       2856.41
Wendy Silmerpan    52       09/15/58      6684 Filtinger Rd.    12/31/2012  32.58       5187.36
Shawn Talsyrvith   26       03/14/91      2384 Miltonaire Ln.   12/31/2012  20.35       3157.31
Input Sally Grilmers for next pay period

个人员工表

Sally Grilmers表

Name            Age    Date of birth    Address             Pay date     Hourly wage    Total Pay
Sally Grilmers   35    11/05/78         1254 Hickory Dr.    12/31/2012   15.35          2410.54
This is an empty row. When I type Sally Grilmers in an empty row in “Main employee sheet”, all data input in “Main employee sheet” automatically gets replicated to its respective column in this sheet.

Jacob Miltisworth表

Name                Age   Date of birth  Address            Pay date    Hourly wage   Total Pay
Jacob Miltisworth   28    05/23/88       2657 Jensons Ave.  12/31/2012  14.29         2105.42
This is an empty row. When I type Jacob Miltisworth in an empty row in “Main employee sheet”, all data input in “Main employee sheet” automatically gets replicated to its respective column in this sheet.

Martin Flemings表

Name             Age   Date of birth   Address           Pay date    Hourly wage    Total Pay
Martin Flemings  43    01/11/64        5342 Landers St.  12/31/2012  17.58          2856.41
This is an empty row. When I type Martin Flemings in an empty row in “Main employee sheet”, all data input in “Main employee sheet” automatically gets replicated to its respective column in this sheet.

我已阅读了很多帖子,但没有发现任何与我有兴趣的内容。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

必须定义公式表达式名称或管理现有公式名称。

  1. 在主菜单上导航至:插入>名称>定义
  2. 在主菜单上导航至:插入>名称>管理(Ctrl + F3)
  3. 根据以下方案进行调整
  4. 定义名称

    Name            Range or formula expression                             Scope  
    Filters         $A$1:$A$2048                                            Document (Global)
    FullData        $Main.$A$1:$G$2048                                       Document (Global)
    getNextRow      IFERROR(IF(COUNT(Filters)>=N($C1),OFFSET                 Document (Global)
                    ($Main.$A$1,SMALL(Filters,$C1),1,1,6)),"")
    Names           OFFSET(FullData ,1,0,COUNTA(OFFSET                      Document (Global)
                    (FullData ,1,0,ROWS(FullData),1)),1)
    NumberOfResult  IF(COUNT(Filters)>=(ROW()-ROW                           Document (Global)
                    (StartResultTable)),ROW()-ROW(StartResultTable),"")
    RowNumber       IF(SelectedName="","", IF($Main.$A1=SelectedName,         Document (Global)
                    ROW()-1,""))                                            Document (Global)
    SelectedName    $Individually.$E$1                                     Document (Global)
    StartResultTable    $Individually.$C$5                                 Document (Global)
    

    必须突出显示Individually sheet上的每一行并将其设置为数组范围。

    1. Ctrl + F2打开功能向导(图标位于公式栏中的第2项)
    2. 结构标签(Shift + Tab)
    3. 检查数组选项(Alt + A)
    4. 在公式字段中输入数组公式或公式表达式名称(Shift + Tab从“数组”选项导航到“公式”字段)
    5. 单击“确定”(回车键)
    6. 该行填满参考表格中的内容
    7. 可以创建一个宏来完成此操作
    8. 创建的任何新文档都可以采用Open document spreadsheet .ods格式或.xls格式,以使公式生效。
    9. 尝试突出显示多行不会正确复制数据。 即使使用相同的公式表达式并且引用名称适用于新文档,将工作表复制到另一个文档也可能会导致错误。必须删除整个数组范围并逐行重新创建。可以记录宏以便自动完成这个重复性任务。

      公式表达式中的数组范围扩展

      为了扩展从引用复制的输出数据的范围,必须从最后一位数字编辑getNextRow公式表达式,在这种情况下为“6”:(过滤器,$ C1),1,1,6 )),“”)。如果主工作表中有六列,并且复制工作表中有六列以上,则只复制前六列。如果将更多列添加到主工作表中,则通过修改公式表达式中的数字来扩展数组范围后,将使用复制工作表中的数据填充相同数量的列。例如,我将(Filters,$ C1),1,1,6)),“”更改为(Filters,$ C1),1,1,25)),“”)以及所有25列或字段,将从“主要”表格复制到“单独”表格。