<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textswriterguidecalculate_multitablexml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Calculating Across Tables</title>
         <filename>/text/swriter/guide/calculate_multitable.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3154248"><bookmark_value>calculating; across multiple text tables</bookmark_value>
      <bookmark_value>tables;calculating across</bookmark_value>
</bookmark><comment>mw changed "text tables;" to "tables;"</comment>
<paragraph xml-lang="en-US" id="hd_id3154248" role="heading" level="1" l10n="U"
                 oldref="11"><variable id="calculate_multitable"><link href="text/swriter/guide/calculate_multitable.xhp" name="Calculating Across Tables">Calculating Across Tables</link>
</variable></paragraph>
      <paragraph xml-lang="en-US" id="par_id3147773" role="paragraph" l10n="U" oldref="12">You can perform calculations that span across more than one table in a text document.</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147795" role="listitem" l10n="U" oldref="13">Open a text document, insert two tables, and type numbers in a few cells in both tables.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147815" role="listitem" l10n="U" oldref="14">Place your cursor in an empty cell in one of the tables.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147833" role="listitem" l10n="U" oldref="16">Press F2.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147228" role="listitem" l10n="U" oldref="17">In the <item type="menuitem">Formula Bar</item>, enter the function that you want to perform, for example, <item type="literal">=SUM</item>.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147254" role="listitem" l10n="U" oldref="18">Click in a cell containing a number, press the plus sign (+), and then click in a different cell containing a number.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3147274" role="listitem" l10n="U" oldref="19">Press <emph>Enter</emph>.</paragraph>
         </listitem>
      </list>
      <embed href="text/shared/00/00000004.xhp#related"/>
      <embed href="text/swriter/main0214.xhp#releistename"/>
      <embed href="text/swriter/guide/calculate.xhp#calculate"/>
      <embed href="text/swriter/guide/calculate_intext.xhp#calculate_intext"/>
      <embed href="text/swriter/guide/calculate_clipboard.xhp#calculate_clipboard"/>
      <embed href="text/swriter/guide/calculate_intable.xhp#calculate_intable"/>
   </body>
</helpdocument>