2014-10-09 16 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