Hello Steve Backman,
Welcome to Microsoft Q&A Forum.
From your description, I understand that you want to build a table in a separate worksheet (tab) of an Excel financial workbook that auto‑populates/updates from the main data sheet without manually copying or pasting.
Here are some workarounds that you can kindly try:
- Structured References (Tables) and Simple Formulas:
- Convert the source range to a Table:
- Select your data > Insert > Table > name it (e.g.,
tblData) via Table Design > Table Name. - On the target tab (e.g.,
Summary), use structured references to bring over fields:=``tblData[Amount]=``tblData[Category]=``tblData[Date] - If you need totals or KPIs, use
SUMIFS,COUNTIFS, etc.:SUMIFS(tblData[Amount], tblData[Account], $A2, tblData[Date], ">=" & $B$1, tblData[Date], "<=" & $C$1) - Here,
$A2is the account selector,$B$1:$C$1could be a date range.
- Dynamic Arrays: FILTER, SORT, UNIQUE
- Filtered view on the Summary tab (spills to as many rows as needed):
=FILTER(tblData, (tblData[Account]=$B$1) * (tblData[Date]>= $B$2) * (tblData[Date]<= $B$3), "No rows") - Sorted & unique helpers:
=``SORT(FILTER(tblData, tblData[Category]=$D$1))=``UNIQUE(tblData[Account]) - Top‑N by Amount (with SORTBY):
=TAKE(SORTBY(FILTER(tblData, tblData[Category]=$D$1), tblData[Amount], -1), 10)
- Filtered view on the Summary tab (spills to as many rows as needed):
- PivotTable on a Separate Tab:
- Insert > PivotTable > Select
tblData, place on Summary tab. - Drag Account/Category to Rows, Date to Columns (group by month/year), Amount to Values.
- Use Report Filter (slicers/timelines) for interactive filtering.
- Insert > PivotTable > Select
- Power Query:
- Convert source to
tblData. - Data > Get Data > From Table/Range > transform (filter rows, change types, add columns).
- Close & Load To… > Table on Summary tab.
- Convert source to
- VBA:
Sub CopyAccountRows() Dim src As ListObject, wsSrc As Worksheet, wsOut As Worksheet Dim acct As String, lastRow As Long Set wsSrc = ThisWorkbook.Worksheets("Data") Set wsOut = ThisWorkbook.Worksheets("Summary") Set src = wsSrc.ListObjects("tblData") acct = wsOut.Range("B1").Value ' criteria cell wsOut.Range("A5").CurrentRegion.Clear Dim r As Range For Each r In src.DataBodyRange.Rows If r.Columns(src.ListColumns("Account").Index).Value = acct Then lastRow = wsOut.Cells(wsOut.Rows.Count, "A").End(xlUp).Row + 1 wsOut.Cells(lastRow, "A").Resize(1, src.ListColumns.Count).Value = r.Value End If Next r End Sub
I hope my answer helps, please feel free to let me know if you need any further assistance.
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.