2012-09-13 32 views
2

一列格式我想excel工作表的頂行的格式複製到選擇的細胞向下每個所選的列。複印基於標題行的Excel

  • 我不能在目標單元格中​​使用條件格式或任何公式,因爲它們已經包含數據和不同的條件格式化公式。
  • 整個列被分組。隨着時間的推移,我可能會更改分組級別,並且不想重新格式化整個工作表...頂部行背景顏色應用了條件格式應用..使用以下公式。

    Function OutlineLev(inp As Integer) As Integer 
    OutlineLev = Columns(inp).OutlineLevel 
    End Function 
    

所以在此例中,行1組級別1細胞背景是橙色的,2級是藍色和L3是綠色的。 (條件格式規則=OutlineLev(CELL("col",D1))=3

  • 您可以看到第2行(黃色單元格)沒有內容。原本我以爲我會在該單元格中使用公式,將頂行的格式複製到每列中的其他行...

本質上。我正在尋找一個宏/函數/公式,它會以某種方式複製頂行的背景(例如Cell D1)。下到列的其餘部分(範圍(D3:。例如,在D9)

enter image description here

回答

2

如果這個代碼

Sub ApplyFormatting() 
    CopyFormat Range("A3:A10"), Range("A1") 
    CopyFormat Range("B3:B10"), Range("B1") 
    CopyFormat Range("C3:C10"), Range("C1") 
    CopyFormat Range("D3:D10"), Range("D1") 
End Sub 

Sub CopyFormat(dest As Range, copyfrom As Range) 
    dest.Interior.Color = copyfrom.Interior.Color 
End Sub 

添加到您的工作表的代碼區,你有一個簡單的工具,幾乎你想要做什麼。唯一的是你必須在某個地方調用ApplyFormatting子例程。例如,如果第一行的顏色取決於某些細胞的值相同的工作表某處,你可以使用紙的Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal Target As Range) 
    ApplyFormatting 
End Sub 

請注意,此事件不直接被觸發只有當單元格發生更改時,纔會更改某個單元格的背景顏色。在你的情況下,這可能已經足夠了,但由於你忘了告訴我們你的第一行是如何格式化的,我只能猜測。

編輯:對您的評論:沒有必要硬編碼的範圍規格,以上只是一個示例來演示如何複製格式。

其適用於全片A解決方案將是這樣的:

Sub ApplyFormatting() 
    Dim maxRow As Long, maxCol As Long, col As Long 
    maxRow = Cells.SpecialCells(xlCellTypeLastCell).Row 
    maxCol = Cells.SpecialCells(xlCellTypeLastCell).Column 
    For col = 1 To maxCol 
     CopyFormat Range(Cells(3, col), Cells(maxRow, col)), Cells(1, col) 
    Next 
End Sub 

您可能需要限制/適應這行的實際表/列,但我希望你能一般理念。

+0

感謝您的響應,這工作!,但是我將這個應用到許多記錄,並不想硬編碼的單元格範圍到功能。數據太動態。 – Hightower

+0

@Hightower :看到我的編輯 –

+0

謝謝你!...正是我在找的東西......唯一的問題是,在我的工作表上這不起作用,(我認爲這與事實有關引用的單元格基於要確定的公式ne他們的內部顏色)...無論如何感謝! – Hightower

1

設置了一整列將導致更小的文件大小的格式,這似乎是一個更好的辦法來設置格式然後用條件格式規則覆蓋第2行的格式,這樣可以完全避免使用VBA,並且您的格式規則適用於整列或整個表格,這是最佳選擇。整個片材和創建使用式=row()=2一條件格式編排規則,並設置fillblack

然後你可以選擇一整列,並將任何格式所需的整列。條件公式最後應用,因此黑色行#2仍然存在。

如果你只希望背景爲全列設置,則只需設置和更改只是列#1單元格字體顏色...

它到底是相同的工作量,因爲您必須設置單元格的格式並運行宏,或設置列的設置並更改頂部單元格的字體顏色...

僅供參考 - 如果您只想使第2行上的黑色橫條擴展了已使用列的寬度(而不是整個工作表的寬度),然後在選擇整個工作表之前選擇單元格A1,並使用公式=and(row()=2,a$1<>"")作爲條件公​​式。

+0

我打算列格式將是動態的,所以我不想手動設置格式。原因是單元格A2會根據單獨的公式(它鏈接到列的組級別)來更改格式,所以這不起作用*(除非我沒有正確理解) – Hightower

+1

如何設置背景你想複製到列的其餘部分嗎?你的插圖和你的問題沒有提到,或者'組級別'的任何事情。你能澄清嗎?如果'組級別'是第一行,第一行的格式得到設置,所以它可以被複制? –