在 Excel 2010 中的單獨工作表上鏡像列

在 Excel 2010 中的單獨工作表上鏡像列

我正在嘗試將同一 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 上做什麼。

使用此方法您可能會發現一些問題:

  1. 如果資料之間有空格(在 Sheet1 中),則可能需要進行一些格式化或附加公式,以避免顯示大量零。
  2. 如果您嘗試使用某些公式作為“計數”或“平均值”,結果可能會被這些零改變(您可以隱藏它們,但它們仍然會影響公式。

答案2

這不能用簡單的公式來完成。如果在 Sheet1 中新增或刪除行,則公式不足以在 Sheet2 中新增或刪除行。為此,您需要採用不同的方法。

一種選擇是建立 VBA 來管理新行的刪除和新增。

另一種方法可能是隱藏行而不是刪除它們。新增一列,將員工標記為活躍或不活躍。然後過濾表以隱藏不活躍的員工。

可以使用公式將名稱從 Sheet1 提取到 Sheet2 中,也可以提取每行的活動/非活動值。例如,如果名稱位於sheet1的A列中,則在Sheet2中使用該名稱

=索引(表1!$A:$A,行())

如果狀態(活動/非活動)位於 B 列中,請=index(Sheet1!$A:$A,row())在另一列中使用,然後對該列進行篩選。

但這存在一個很大的固有危險:如果Sheet1中的員工順序發生變化,那麼Sheet2中的資料將全部錯誤。員工的順序仍將與 Sheet1 中的順序匹配,但其餘資料將不會按照新的排序順序移動。

使用 VBA 的方法會更加穩健。

相關內容