2014-10-09 48 views
-2
Sub insertHeader() 

    Dim rng1 As Range 
    Dim ws As Worksheet 
    Dim c1 As Range 
    Dim rng2 As Range 

    Set ws = Worksheets("Sheet1") 
    Set rng1 = ws.Range("A2:AV2") 

    For Each c1 In rng1 
     If c1.Value <> "" Then 
      c1.Value = c1.Offset(-1) & "_" & c1.Value 
     End If 
    Next 

End Sub 

我試圖用副標題VBA在EXCEL中將頭和子頭結合起來?

頁眉結合見下PIX-提前

謝謝! FIRST

Result

+0

你嘗試過什麼?發佈您嘗試實施但未能正常工作的代碼會爲您提供有關您的代碼失敗的方向的指示,因此您可以更好地協助您。 – mrbungle 2014-10-09 15:05:49

+0

有一個易於理解的解決方案(不需要VBA),它需要您在電子表格中添加一行,在左側添加一個虛擬列,並在另一行顯示結果。如果這是可以接受的,那麼我會把它粘貼起來。 – Bathsheba 2014-10-09 15:12:06

+0

我得使用VBA,我現在也試着在代碼上工作。我對VBA相當陌生,所以它仍然是一個正在進行的工作。大聲笑 – Flyhigh 2014-10-09 15:34:35

回答

0
Sub insertHeader() 

    Dim rng1 As Range 
    Dim ws As Worksheet 
    Dim c1 As Range 
    Dim rng2 As Range 
    Dim currHeader 

    Set ws = Worksheets("Sheet1") 
    Set rng1 = ws.Range("A2:AV2") 
    currHeader = ""  

    For Each c1 In rng1 
     If Len(c1.Offset(-1).Value)>0 Then 
      currHeader = c1.Offset(-1).Value  
     End If 
     If c1.Value <> "" & currHeader <> "" Then 
      c1.Value = currHeader & "_" & c1.Value 
     End If 
    Next 

End Sub 
+0

偉大的東西,謝謝! – Flyhigh 2014-10-09 15:58:13

0
Sub insertHeader() 

Dim rng1 As Range 
Dim ws As Worksheet 
Dim c1 As Range 


Set ws = Worksheets("Sheet1") 
Set rng1 = ws.Range("A1:AV1") 

For Each c1 In rng1 
    If c1.Value <> "" Then 
     c1.Offset(1, 0) = c1.Value & "_" & c1.Offset(1, 0) 
     c1.Offset(1, 1) = c1.Value & "_" & c1.Offset(1, 1) 
     c1.Offset(1, 2) = c1.Value & "_" & c1.Offset(1, 2) 
     c1.Offset(1, 3) = c1.Value & "_" & c1.Offset(1, 3) 
     c1.Offset(1, 4) = c1.Value & "_" & c1.Offset(1, 4) 

    End If 
Next 


End Sub