Я объединяю две ячейки в Excel 2016
= E2 & "-" & F2

Теперь текст в ячейке E2 - обычный, текст в ячейке F2 - жирный.
Тем не менее, при объединении ячеек весь текст нормальный

Если вы пишете в ячейке, вы можете выделить часть текста жирным шрифтом. Таким образом, возможно два форматирования в одной ячейке, но при объединении?

Дополнительная информация:
После изучения проблемы, я считаю, что это требует немного VBA-скрипт. Если вы можете помочь со сценарием, который читает длину первой части, а затем выделяет жирным шрифтом последнюю часть текста, которая должна это сделать. Однако полная формула:= ЕСЛИ (План!F2 <> ""; план!E2 & "-" & Plan!F2; план!E2)

У меня есть функция VBA:

Function boldIt(navn As String, ekstra As String)

Dim ln1 As Integer
Dim ln2 As Integer

ln1 = Len(navn)
ln2 = Len(navn) + Len(ekstra)

If (ln1 = ln2) Then
    boldIt = navn
Else
    boldIt = navn & " - " & ekstra
    boldTxt ln1, ln2
End If

End Function

Public Sub boldTxt(startPos As Integer, charCount As Integer)
    With ActiveCell.Characters(Start:=startPos, Length:=charCount).Font
        .FontStyle = "Bold"
    End With
End Sub

Функция берет содержимое двух текстовых ячеек, которые я хочу объединить
Текст объединен правильно, и подфункция вызвана (проверено с msgBox)
Тем не менее, текст не выделен жирным шрифтом, как я ожидал

2 ответа2

0

У меня нет Excel 2016 для тестирования, что я знаю:

До Excel 2013:

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

В Excel Online:

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

0

Я сделал это с сабом :-)

Этот Sub перебирает столбцы, берет строки двух ячеек, объединяет строки и добавляет их в целевую ячейку, выделяя текст второй ячейки.

Спасибо Мате Юхасу за его указатели!

Sub boldIt()
Dim pos_bold As Integer
Dim celltxt As String

For i = 2 To 200000
    ' first cell will always be populated - if not - exit
    If (Range("Plan!E" & i).Value = "") Then Exit For

    ' if second cell is empty - take only first cell as normal txt
    If (Range("Plan!F" & i).Value = "") Then
        Range("Kalender!F" & i).Value = Range("Plan!E" & i).Value
    Else
        ' calculate start of bold text
        pos_bold = Len(Range("Plan!E" & i).Value) + 1

        ' create the string
        celltxt = Range("Plan!E" & i).Value & " - " & Range("Plan!F" & i).Value
        ' add string to field and add bold to last part
        With Worksheets("Kalender").Range("F" & i)
            .Value = celltxt
            .Characters(pos_bold).Font.Bold = True
        End With
    End If
Next i
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .