<?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="textscalcguidetable_cellmergexml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Merging and Splitting Cells</title>
         <filename>/text/scalc/guide/table_cellmerge.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3147240"><bookmark_value>cells; merging/unmerging</bookmark_value>
      <bookmark_value>tables; merging cells</bookmark_value>
      <bookmark_value>cell merges</bookmark_value>
      <bookmark_value>unmerging cells</bookmark_value>
      <bookmark_value>merging;cells</bookmark_value>
</bookmark><comment>MW made "cell merges;..." a one level entry</comment>
<paragraph xml-lang="en-US" id="hd_id8005005" role="heading" level="1" l10n="NEW"><variable id="table_cellmerge"><link href="text/scalc/guide/table_cellmerge.xhp" name="Merging and Unmerging Cells">Merging and Unmerging Cells</link>
</variable><comment>mw created this file out of the shared guide "table_cellmerge.xhp", see also bug #63021</comment></paragraph>
      <paragraph xml-lang="en-US" id="par_id8049867" role="paragraph" l10n="NEW">You can select adjacent cells, then merge them into a single cell. Conversely, you can take a large cell that has been created by merging single cells, and divide it back into individual cells.</paragraph>
      <paragraph xml-lang="en-US" id="par_id0509200913480176" role="note" l10n="NEW">When you copy cells into a target range containing merged cells, the target range gets unmerged first, then the copied cells are pasted in. If the copied cells are merged cells, they retain their merge state.</paragraph>
      <paragraph xml-lang="en-US" id="hd_id235602" role="heading" level="2" l10n="NEW">Merging Cells</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id1272927" role="listitem" l10n="NEW">Select the adjacent cells.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id6424146" role="listitem" l10n="NEW">Choose <emph>Format - Merge Cells</emph>.</paragraph>
         </listitem>
      </list>
      <paragraph xml-lang="en-US" id="hd_id451368" role="heading" level="2" l10n="NEW">Canceling the merging of cells</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id7116611" role="listitem" l10n="NEW">Place the cursor in the cell to be split.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id9493087" role="listitem" l10n="NEW">Choose <emph>Format - Merge Cells</emph>.</paragraph>
         </listitem>
      </list>
      <embed href="text/shared/00/00000004.xhp#related"/>
      <embed href="text/scalc/guide/cellreferences.xhp#cellreferences"/>
   </body>
</helpdocument>