
我正在嘗試將同一 Excel 書中的一個 Excel 工作表中的列鏡像到另一個 Excel 工作表中。目標是在編輯第一個工作表時更新第二個工作表。基本上,當我在第一個工作表中新增/刪除行時,它會在第二個工作表中自動執行相同的操作。
我的專欄有員工姓名,當人們進出辦公室時,我將相應地添加/刪除他們。我的工作表追蹤不同的數據,但員工都是一樣的。我的第一張工作表是主要工作表,其餘工作表則相應地提取資料。鏡像公式有用嗎?另外,如何讓它應用於整個列?
答案1
這裡有一個沒有 VBA 的想法:「偏移」。
假設您的原始資料位於「Sheet1」中,並且您想要鏡像「Sheet2」中的每個儲存格。對於 Sheet2 上的任何單元格,您可以使用:
=OFFSET(Sheet1!$A$1,Row(A1)-1,COLUMN(A1)-1,1,1)
Sheet1!$A$1
:是您的主要參考儲存格。這是唯一不能移動或刪除的儲存格。您可以將第 1 列留空並隱藏它,以防止這種情況發生。Row(A1)-1
:「Row(A1)」將計算您位於 Sheet2 的哪一行。COLUMN(A1)-1
:與上面相同,但用於弄清楚您的專欄。,1,1)
:設定單元格範圍的大小(1××)
只要您不刪除主參考儲存格(本例中為 A1),我相信它應該有效,無論您在 Sheet1 上做什麼。
使用此方法您可能會發現一些問題:
- 如果資料之間有空格(在 Sheet1 中),則可能需要進行一些格式化或附加公式,以避免顯示大量零。
- 如果您嘗試使用某些公式作為“計數”或“平均值”,結果可能會被這些零改變(您可以隱藏它們,但它們仍然會影響公式。
答案2
這不能用簡單的公式來完成。如果在 Sheet1 中新增或刪除行,則公式不足以在 Sheet2 中新增或刪除行。為此,您需要採用不同的方法。
一種選擇是建立 VBA 來管理新行的刪除和新增。
另一種方法可能是隱藏行而不是刪除它們。新增一列,將員工標記為活躍或不活躍。然後過濾表以隱藏不活躍的員工。
可以使用公式將名稱從 Sheet1 提取到 Sheet2 中,也可以提取每行的活動/非活動值。例如,如果名稱位於sheet1的A列中,則在Sheet2中使用該名稱
=索引(表1!$A:$A,行())
如果狀態(活動/非活動)位於 B 列中,請=index(Sheet1!$A:$A,row())
在另一列中使用,然後對該列進行篩選。
但這存在一個很大的固有危險:如果Sheet1中的員工順序發生變化,那麼Sheet2中的資料將全部錯誤。員工的順序仍將與 Sheet1 中的順序匹配,但其餘資料將不會按照新的排序順序移動。
使用 VBA 的方法會更加穩健。