2014-02-22 83 views
0

我有以下的原料表結構 - 信用卡交易的列表:創建一個Excel查看錶?

Date | Description | Debits | Credits 

日期將使用這種方法來轉換:

其他列就會留在這裏。 IS。我可以創建目標表的第一行,但我需要向下擴展它以匹配源表中的行數。

有沒有辦法使最後一部分自動化,即行擴展

我期待原始數據表隨着時間的推移而增長,因此目標表也需要調整其行數(無論是全自動還是通過單擊宏)。

有StackOverflow上過類似的問題,但我使用的命名錶,並命名爲列:

表名:

Source : TableRawData 
Target : ProcessedData 

日期換算公式我在第1欄中使用:

=MorphDate(TableRawData[@Date]) 

回答

1

將此代碼粘貼到帶有源表(ListObject)的工作表中。我使用了你指定的表名。你需要調整工作表名稱與實際的工作簿:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim loSource As Excel.ListObject 
Dim loTarget As Excel.ListObject 
Dim wb As Excel.Workbook 

Set wb = ThisWorkbook 
With wb 
    Set loSource = .Worksheets("Source").ListObjects("TableRawData") 
    Set loTarget = .Worksheets("Target").ListObjects("ProcessedData") 
    'Only change Target if Source has more rows or columns, i.e, 
    'don't shrink, only grow. 
    If loTarget.Range.Rows.Count < loSource.Range.Rows.Count Or _ 
     loTarget.Range.Columns.Count < loSource.Range.Columns.Count Then 
     With loTarget 
      'two kinds of 'Resize in one line! 
      .Resize (.Range.Cells(1).Resize(loSource.Range.Rows.Count, loSource.Range.Columns.Count)) 
     End With 
    End If 
End With 
End Sub 

在本觸發如果行或列的任意數量越大的評論中指出。如果您希望它在Target長大或縮小時更改,請將<更改爲<>。

如果您對代碼中使用的兩種不同Resize感興趣,以及有關複製表的一些信息,請參閱我的this post of mine

+0

對不起,一個蹩腳的問題 - 我如何讓這個代碼運行,要麼通過請求或自動?我嘗試在Macros中粘貼「表單/查看代碼」,但之後我無法再調用它。我甚至試圖在這樣的表單代碼中調用:'Worksheet_Change',在函數定義之前(看起來像Target參數是多餘的,所以我刪除了它)。嘗試重新啓動Excel - 沒有效果。請指教。 – Neolisk

+0

每當工作表中的源表發生更改時,它都會自動運行。這是WorkSheet_Change事件的作用。正如你所提到的,你必須將它粘貼到該表的代碼中。您還必須調整與我使用的不同的任何工作表或表格(VBA中的ListObject)名稱。 –

+0

是的,現在它正在工作。謝謝你的幫助。 +1並接受。 – Neolisk