Note: The other languages of the website are Google-translated. Back to English

Как объединить столбцы ячеек и сохранить цвет текста в Excel?

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

Объедините столбцы ячеек и сохраните цвет шрифта текста с кодом VBA


Объедините столбцы ячеек и сохраните цвет шрифта текста с кодом VBA

Чтобы завершить эту задачу в Excel, следующий код VBA может оказать вам услугу, сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: объединить столбцы ячеек и сохранить цвет текста:

Sub MergeFormatCell()
'Updateby Extendoffice
    Dim xSRg As Range
    Dim xDRg As Range
    Dim xRgEachRow As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim I As Integer
    Dim xRgLen As Integer
    Dim xSRgRows As Integer
    Dim xAddress As String
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xSRg = Application.InputBox("Please select cell columns to concatenate:", "KuTools For Excel", xAddress, , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    xSRgRows = xSRg.Rows.Count
    Set xDRg = Application.InputBox("Please select cells to output the result:", "KuTools For Excel", , , , , , 8)
    If xDRg Is Nothing Then Exit Sub
    Set xDRg = xDRg(1)
    For I = 1 To xSRgRows
        xRgLen = 1
        With xDRg.Offset(I - 1)
            .Value = vbNullString
            .ClearFormats
			.NumberFormat = "@"
            Set xRgEachRow = xSRg(1).Offset(I - 1).Resize(1, xSRg.Columns.Count)
            For Each xRgEach In xRgEachRow
                .Value = .Value & Trim(xRgEach.Value) & " "
            Next
            For Each xRgEach In xRgEachRow
                xRgVal = xRgEach.Value
                With .Characters(xRgLen, Len(Trim(xRgVal))).Font
                .Name = xRgEach.Font.Name
                .FontStyle = xRgEach.Font.FontStyle
                .Size = xRgEach.Font.Size
                .Strikethrough = xRgEach.Font.Strikethrough
                .Superscript = xRgEach.Font.Superscript
                .Subscript = xRgEach.Font.Subscript
                .OutlineFont = xRgEach.Font.OutlineFont
                .Shadow = xRgEach.Font.Shadow
                .Underline = xRgEach.Font.Underline
                .ColorIndex = xRgEach.Font.ColorIndex
                End With
                xRgLen = xRgLen + Len(Trim(xRgVal)) + 1
            Next
        End With
    Next I
End Sub

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

4, Затем нажмите OKпоявится другое диалоговое окно, выберите ячейки, в которые вы хотите вывести объединенные результаты, см. снимок экрана:

5. Затем нажмите OK Кнопка, столбцы были объединены без потери цвета текста, как показано на следующем снимке экрана:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (12)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Этот код работает очень хорошо. Но как добавить пробел до или после текста?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Этот метод работает хорошо, пока xRgLen не превышает 255.
Похоже, этот параметр является байтом :-(
Как можно обойти это ограничение?
Этот комментарий был сведен к минимуму модератором на сайте
Fantástica la macro de concatenar cadena de texto conservando formato de origen. En mi caso no funcionaba con F5, pero en la pestaña macro, modificar y opciones me allowe entrar el modo de ejecucion con CTRL+letra y funciona de maravilla. Большое спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Habría manera de hacerlo con números?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за код.
Если в тексте есть «( )», например «помидор (помидоры)». Это тоже не работает. Есть ли что-то изменить для работы с "()"?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Ра,
Как дела? Если в тексте есть «()», нам не нужно менять код VBA. Пожалуйста, посмотрите на скриншот, текст «помидор (помидоры)» может быть успешно объединен с другими столбцами ячеек в один столбец. Надеюсь, это поможет вам.
С уважением,
Мэнди
Этот комментарий был сведен к минимуму модератором на сайте
спасибо за код!
Можно ли автоматически обновлять столбец конкатенации при внесении каких-либо изменений?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Кэти,
Извините, в настоящее время нет хорошего способа сделать это, вам нужно снова запустить код после изменения содержимого ячейки. 😂
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Хорошо, спасибо за ответ
Этот комментарий был сведен к минимуму модератором на сайте
5. Примечание. Если данные, которые необходимо объединить, содержат числа, код макроса не может работать правильно.

Однако, если вы вставите код:
.NumberFormat = "@"
(после:
.ClearFormats
) между номерами строк 24-25, возможно, сработает.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Мариуш
Большое спасибо за ваш комментарий, это работает хорошо. Мы обновили код в этой статье.
Еще раз спасибо! 👍
Этот комментарий был сведен к минимуму модератором на сайте
Пожалуйста! Мне нравятся 🥰 очень разные и интересные советы на этом сайте.
Здесь еще нет комментариев

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL