我有一个带有表A6:ex33的excel文件。我不得不连接A和B列,以便B中的值显示在一个新行中。我已经通过内置于Excel中的CONCATENATE函数(以及新行的CHAR(10))实现了这一目标。
连接后,电子表格如下所示:
现在我还需要为单元格内的每一行设置不同的格式,即大小为12,第一行为粗体,第二行为8:
如何做到这一点?如果它是一个短表,我会手动完成,但由于我有一些文件,完全超过5000行,也许自动化方式会更好。
我找到了解决这个问题的答案,但由于我不知道如何使用VBA,我或多或少迷失了。我也使用了很多python并查看了openpyexl和csv,但还没有找到实现方法。
感谢您的帮助!
答案 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
其格式如下:
答案 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
如果您对代码的工作方式有任何疑问,请与我们联系!