如何在Excel中的同一单元格中的两行使用不同的字体?

时间:2016-06-13 11:58:32

标签: python excel vba excel-vba

我有一个带有表A6:ex33的excel文件。我不得不连接A和B列,以便B中的值显示在一个新行中。我已经通过内置于Excel中的CONCATENATE函数(以及新行的CHAR(10))实现了这一目标。

连接后,电子表格如下所示:

EXAMPLE1

现在我还需要为单元格内的每一行设置不同的格式,即大小为12,第一行为粗体,第二行为8:

EXAMPLE2

如何做到这一点?如果它是一个短表,我会手动完成,但由于我有一些文件,完全超过5000行,也许自动化方式会更好。

我找到了解决这个问题的答案,但由于我不知道如何使用VBA,我或多或少迷失了。我也使用了很多python并查看了openpyexl和csv,但还没有找到实现方法。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用Excel VBA,您需要使用Characters对象的Range属性。例如:

Sub Test()
    Dim rngCell As Range
    Dim lngPos As Long

    'get cell
    Set rngCell = Sheet1.Range("A1")

    'find linebreak
    lngPos = InStr(1, rngCell.Value, vbLf, vbBinaryCompare)

    'format either side
    rngCell.Characters(1, lngPos).Font.Bold = True
    rngCell.Characters(lngPos + 1, Len(rngCell.Value) - lngPos).Font.Color = 1234

End Sub

其格式如下:

enter image description here

答案 1 :(得分:0)

在这里,试试这段代码。我根据你的截图建立了这个。

Sub partialFormatting()

Dim tws As Worksheet

Dim fr, lr As Integer

Dim pos As Integer


    Set tws = ThisWorkbook.Worksheets("Sheet1")

    fr = 7

    lr = tws.Range("A1000000").End(xlUp).Row


    For r = fr To lr

        With tws.Range("A" & r)

            pos = InStr(.Value, vbLf)

            With .Characters(Start:=1, Length:=pos - 1).Font
                .FontStyle = "Bold"
                .Size = 12
            End With

            With .Characters(Start:=pos + 1, Length:=Len(.Value) - pos).Font
                .FontStyle = "Normal"
                .Size = 8
            End With

        End With

    Next r


End Sub

如果您对代码的工作方式有任何疑问,请与我们联系!