Как найти объединенные ячейки в word

dr.MIG
Гуру
Гуру
Аватара пользователя

 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль
  • Сайт
  • ICQ

Word. Узнать объединены ли ячейки

Перебираю ячейки в таблице, как узнать является ли текущая ячейка результатом объединения нескольких столбцов?

Salus populi suprema lex


Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону
  • ICQ

Re: Word. Узнать объединены ли ячейки

Сообщение Alec » 17.07.2010 (Сб) 21:18

По-моему непосредственно это невозможно. Слишком много условностей — если объединить две ячейки, а потом получившуюся разбить на три, которая будет считаться объединенной?
Сравнением ширин ячеек с ширинами в других строках?

Иногда лучше вовремя остановиться…
И начать заново!


iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Word. Узнать объединены ли ячейки

Сообщение iGrok » 17.07.2010 (Сб) 21:37

Alec писал(а):Сравнением ширин ячеек с ширинами в других строках?

А чем это поможет, если

Alec писал(а):…объединить две ячейки, а потом получившуюся разбить на три…

label:

cli

jmp label


dr.MIG
Гуру
Гуру
Аватара пользователя

 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль
  • Сайт
  • ICQ

Re: Word. Узнать объединены ли ячейки

Сообщение dr.MIG » 17.07.2010 (Сб) 21:58

В общем случае, возможно это и не решаемо. Меня же интересует частный случай. Во вложении пример DOC-файла. Это расписание. Другие варианты не имеют принципиальных отличий и имеют сходную структуру. Задача состоит в том, чтобы из этого общего расписания извлечь расписание для отдельных групп, т.е. в данном случае получить 24 отдельных расписания. Вот и думаю над алгоритмом.
Рассматривал как наиболее простой вариант поставить курсор в верхнюю ячейку и спускаясь на ячейку ниже получить искомое. Однако это движение так же не удается организовать так как появляется ошибка, которую и следует ожидать: «Отсутсвует доступ к отдельным строкам, поскольку таблица имеет ячейки, объежиненные по вертикали.»

Вложения
sample.zip
(28.48 Кб) Скачиваний: 194

Salus populi suprema lex


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Word. Узнать объединены ли ячейки

Сообщение alibek » 17.07.2010 (Сб) 22:40

В Word-овских таблицах нет такого понятия «объединенной ячейки», какое вкладывается в объединенные ячейки Excel.
Так что считай количество ячеек в строке и складывай их ширину, после чего сравнивай со следующей строкой.

Lasciate ogni speranza, voi ch’entrate.


viter.alex
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal
  • Сайт
  • ICQ

Re: Word. Узнать объединены ли ячейки

Сообщение viter.alex » 20.07.2010 (Вт) 12:41

Если ячейки объединены по строкам, то можно узнать так (работает только для Selection, но не для Range):

Код: Выделить всё
ActiveDocument.Tables(1).Range.Cells(1).Select
With Selection
  If .Information(wdStartOfRangeRowNumber) <> .Information(wdEndOfRangeRowNumber) Then
    MsgBox "Ячейка объединена по " & .Information(wdEndOfRangeRowNumber) - .Information(wdStartOfRangeRowNumber) - 1 & " строкам"
  End If
End With

С ячейками, объединёнными по столбцам, так не получится.

Лучше день потерять — потом за пять минут долететь!


dr.MIG
Гуру
Гуру
Аватара пользователя

 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль
  • Сайт
  • ICQ

Re: Word. Узнать объединены ли ячейки

Сообщение dr.MIG » 20.07.2010 (Вт) 20:00

Да, я этот код нашел, но интересовало именно объединение по столбцам.
Тогда другой вопрос — можно ли как-то эмулировать переход на ячейку вниз? Или единственный выход — это MoveDown с wdLine и проверкой произошел ли переход к другой ячейке или был переход внутри ячейки?

Salus populi suprema lex




Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

В общем, в продолжение своей предыдущей темы по парсингу таблиц Word’a с помощью interop я столкнулся с объединенными ячейками.

Как я могу узнать на сколько ячеек произошло объединение, что бы я мог размножить F3 на N строчек?

Капался в дебаггере в поисках нужного свойства, но что-то не нашел… Да и в интернете поголовно пишут, что такого свойства нет

UPD 1

На одном из ресурсов подкинули вот такую идею(Код на VBA, но легко переписывается на C#):

Sub ParseInExcel()
    Dim doc As Document, tbl As Table, eObj, eWbk, eWst, eRng, eCell
    Dim i As Long, j As Long
    Set doc = ThisDocument
    Set tbl = doc.Tables(1)
    tbl.Range.Copy
    Set eObj = CreateObject("Excel.Application")
    Set eWbk = eObj.Workbooks.Add
    Set eWst = eWbk.Sheets(1)
    eWst.Paste
    Set eRng = eWst.Cells(1).CurrentRegion
    For i = 1 To eRng.Rows.Count
        For j = 1 To eRng.Columns.Count
            Set eCell = eRng.Cells(i, j)
            If eCell.MergeCells Then
                Debug.Print eCell.MergeArea.Cells(1).Value & " ";
            Else
                Debug.Print eCell.Value & " ";
            End If
        Next
        Debug.Print
    Next
    eWbk.Saved = True
    eWbk.Close
    Set eWbk = Nothing
    eObj.Quit
    Set eObj = Nothing
End Sub

Смысл в том, что из Word все копипастится в Excel, а там уже появляются свойства, которые показывают объединение ячеек-MergeRange. Проблема в том, что будет занят буфер обмена(самое проблемное на мой взгляд, так как не смогу работать за ПК в момент работы программы иначе покалечу буфер), а так же в том, что подключается второй всадник апокалипсиса-Excel.

Если Excel знает, как представить таблицу из Word и создать свойства, которые показывают, что некая зона объединена, то значит должен иметься какой-то однозначный алгоритм для вычисления этого средствами Word’a.

Даже при сохранении в html-формате пишется кол-во объединенных колонок и строк.

UPD 2

По объединенным строкам я нашел решение, но по колонкам нет. Накидал свое решение, но не думаю, что оно универсально.

Может у кого-то есть еще идеи?

P.S Interop не принципиален, но в приоритете, так как много кода на нем нарисовал.

Если есть решение например для *.DOCX, то я могу сменить формат.

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Еще…Меньше

Вы можете столкнуться Excel с объединенными ячейками, о которым вы не знаете. Это может быть неприятно, Excel не сортировать данные в столбце, который содержит объединенные ячейки.

Вы можете найти все объединенные ячейки на своем компьютере, а затем отобрять их,выверив эти ячейки.

  1. На вкладке Главная выберите Найти и выделить > Найти.

  2. Щелкните Параметры > формат .

    Диалоговое окно "Поиск"

  3. Нажмите кнопку Выравнивание > объединить ячейки >ОК.

    Установленный флажок "Объединить"

  4. нажмите кнопку Найти все, чтобы просмотреть список всех объединенных ячеек на данном листе.  

    Поиск всех объединенных ячеек

    При выборе элемента в списке Excel выделит объединенную ячейку на листе. Теперь вы можете ото всех ячеек.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

Как отменить объединение ячеек в ворде

Несколько ячеек таблицы, расположенных в одной строке или в одном столбце, можно объединить. Например, вы можете объединить несколько ячеек по горизонтали, чтобы создать заголовок таблицы, равный по ширине нескольким столбцам.

Выделите ячейки, которые требуется объединить.

В разделе Работа с таблицами на вкладке Макет в группе Объединение выберите команду Объединить ячейки.

Разделение ячеек

Выделите одну или несколько ячеек, которые требуется разделить.

В группе Работа с таблицами на вкладке Макет в группе Слияние выберите команду Разделить ячейки.

Введите число столбцов и строк, на которое следует разбить выделенные ячейки.

Несколько ячеек, расположенных в одной строке или в одном столбце, можно объединить в одну вместе с их содержимым. Например, можно объединить несколько ячеек по горизонтали, чтобы создать заголовок таблицы, равный по ширине нескольким столбцам.

Выделите ячейки, которые нужно объединить.

Совет: Если у вашей таблицы нет границ, можно отобразить сетку. Щелкните любое место таблицы, а затем на вкладке Макет (рядом с вкладкой Конструктор таблиц) выберите команду Отобразить сетку.
На вкладке "Макет" нажмите кнопку "Отобразить сетку".

На вкладке Макет (рядом с вкладкой Конструктор таблиц) выберите команду Объединить ячейки.

Объединяем ячейки таблицы в Microsoft Word

Как в Ворде объединить ячейки

Мы уже неоднократно писали о возможностях текстового редактора Microsoft Word в целом, и в частности о том, как в нем создавать и изменять таблицы. Инструментов для этих целей в программе имеется довольно много, все они удобно реализованы и позволяют с легкостью справляться со всеми задачами, которые могут выдвигать перед собой большинство пользователей. Одной из таковых является объединение ячеек, и сегодня мы расскажем о ее решении.

Объединение ячеек в Ворде

При создании таблицы в Microsoft Word на ленте (панель управления) появляется группа вкладок «Работа с таблицами». В ее состав входит подвкладка «Макет», инструментарием которой нам с вами и нужно воспользоваться для того, чтобы объединить ячейки.

    Выделите с помощью мышки ячейки в таблице, которые необходимо объединить. Это могут быть как элементы одной строки или столбца, так и диапазон таковых.

Выделить две ячейки в Word

Объединить ячейки в Word

Ячейки объединены в Word

Разделение ячеек

Узнав о том, как объединить ячейки созданной в Ворде таблицы, нелишним также будет иметь представление и о том, как выполнить противоположную процедуру – их разделение. Алгоритм действий в данном случае практически такой же.

  1. Выделите с помощью мышки ячейку (или ячейки), которую вы хотите разбить на несколько. В нашем примере это пара, объединенная в предыдущей части статьи.

Выделить ячейку в Word

Разделить ячейки в Word

Окно разбиения ячеек в Word

Примечание: Даже одну ячейку можно разбить на несколько частей и по горизонтали (строки), и по вертикали (столбцы).

Разделение одной ячейки на несколько в программе Microsoft Word

Ячейки будут разделены согласно заданным вами параметрам.

разбитые ячейки в Word

Заключение

Из этой небольшой статьи вы узнали немного больше о работе с таблицами в Microsoft Word, а конкретно о том, как объединять ячейки и/или разделять их.

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.
ЗакрытьОпишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Как объединить и разъединить ячейки и столбцы в таблице в Ворде: пошаговая инструкция, сочетание клавиш

Статья расскажет, как объединить или разъединить ячейки и столбцы в «Microsoft Word».

В текстовом редакторе «Word» нам открывается множество возможностей, включая создание и оформление таблиц. Таблицы можно расширять, автоматически нумеровать в них строки, нумеровать сами таблицы в одном документе и т.д.

В «Word» достаточно широкий инструментарий для осуществления разных задач с таблицами и текстом. Сегодня мы поговорим о том, как объединять или разделять в «Word 2007/2010/2013/2016» столбцы и ячейки.

Как в «Word» объединить и разъединить ячейки и столбцы в таблице?

  • Выделяем мышкой те ячейки в таблице, которые будем объединять (в каждой версии «Word» наименование разделов, пунктов, подпунктов может немного отличаться, но принцип работы с инструментарием остается одинаковым).

Выделяем мышкой те ячейки в таблице, которые будем объединять

Выделяем мышкой те ячейки в таблице, которые будем объединять

  • На панели инструментов заходим в раздел «Макет», нажимаем на кнопку «Объединение» и далее – на «Объединить ячейки».

Раздел "Макет", кнопка "Объединение"

Раздел «Макет», кнопка «Объединение»

  • Таким простым действием мы быстро объединили нужные нам ячейки

Объединенные ячейки

  • Теперь, если мы хотим, наоборот, разъединить ячейки, то действуем обратным способом. Выделяем ячейку, которую хотим разъединить.

Выделяем ячейку для разъединения

Выделяем ячейку для разъединения

  • Снова на панели инструментов в разделе «Главная» нажимаем на «Объединение» и теперь уже жмем на «Разделить ячейки».

Заходим в раздел "Макет" - "Разъединить ячейки"

Заходим в раздел «Макет» — «Разъединить ячейки»

  • Далее откроется окошко с предложением выбрать число строк и столбцов, на которые мы хотим разделить нашу ячейку. Выбираем то, что нужно и жмем на «Ок».

Разбиваем ячейку на нужное количество столбцов и строк

  • После этого наслаждаемся результатами (на картинке ниже)

Если вы хотите объединить или разделить ячейки с помощью сочетания клавиш, то воспользоваться этим мы не сможем, в силу отсутствия по умолчанию данной функции в «Word». Но вы сможете назначать любые горячие клавиши и команды для них в настройках редактора. Приведенные нами выше способы тоже очень удобны.

When a Word table contains horizontally merged cells, accessing aTable.Columns.First or performing a For Each over aTable.Columns will result in an error.

Is there a way to determine if a table contains horizontally merged cells without resulting in an error?

I’ve read Determine if a Word cell is merged, but that is about detecting if a particular Word table cell is merged, rather than does the whole table have any merged cells.

Martijn Pieters's user avatar

asked Dec 24, 2010 at 2:09

Reuben's user avatar

Found a reference in this article to a Uniform property on the Table object, which will return a false if the table has merged or split cells.

Though this does not indicate if the cells are horizontally or vertically merged (or both), but it’s a start, and the property answers my question.

answered Jan 3, 2011 at 23:41

Reuben's user avatar

ReubenReuben

4,1162 gold badges46 silver badges57 bronze badges

Yes, it’s there.
Here is the logical explanation how you will detect vertically merged cells. Horizontally merged cell also can detect, but it will need some more coding.

            But, unfortunately, not by calling any WORD VBA method or accessing any property of cell or table. It's by applying successive steps.

            Step1:
            -> Detect Row Count and Column Count of the table

            Step2:
            -> Declare an string array with same dimension as table( Dim A$()). Fill each cell of the array with "<m>" string.

            Step3:
            -> Start from cell(1)
            -> Then move cell by cell(Cell.Next method)
            -> Get each cells RowIndex and ColumnIndex.
            -> Erase the content "<m>" from the array, referenced by this RowIndex and ColumnIndex(A(RowIndex,ColumnIndex)=""
            -> Repeat this step until Cell.Next ends.

            Step4:
            -> Now check each cell of the Array(A$()). Those cells have the"<m>" string, are merged. Merged with immediate top cell. 

            I've not placed any function or code block. Assume it'll be more easy.

            Thanks

            Shubhayan

answered Jul 7, 2016 at 11:30

Shubhayan B's user avatar

Like this post? Please share to your friends:
  • Как найти объединенную ячейку в excel
  • Как найти общую сумму в excel
  • Как найти общую стоимость в рублях в excel
  • Как найти общую стоимость в excel формула
  • Как найти общий финансовый результат в excel