2016-06-13 142 views
0

我有一個表格A6:E233的Excel文件。我不得不連接列A和B,以便來自B的值以新行顯示。我已經通過CONCATENATE函數實現了這個功能(並且爲新行添加了CHAR(10))。如何在Excel中的同一個單元格中爲兩行使用不同的字體?

級聯後的電子表格看起來像這樣:

EXAMPLE1

現在我還需要不同的格式化用於在細胞內的每一行,即大小爲12,粗體爲第一線和大小8爲第二線:

EXAMPLE2

如何實現這一目標?如果它是一個簡短的表格,我會手動完成,但由於我有幾個文件,總共超過5000行,可能自動化的方式會更好。

我找到了解決這個問題的答案,但是因爲我不知道如何使用VBA,所以我或多或少地迷失了方向。我也使用了很多python,並通過openpyexl和csv查看過,但還沒有找到如何實現這一點的方法。

謝謝你的幫助!

+0

openpyxl在這裏不會幫你,它不顯示混合單元格格式。 –

回答

1

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

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

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 

如果您對代碼的工作方式有任何疑問,請讓我知道!

相關問題