![如果我将其添加到 Sheet-1 中的主表中,则自动将一行添加到 Sheet-2 中的类似表中](https://linux22.com/image/1442545/%E5%A6%82%E6%9E%9C%E6%88%91%E5%B0%86%E5%85%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%20Sheet-1%20%E4%B8%AD%E7%9A%84%E4%B8%BB%E8%A1%A8%E4%B8%AD%EF%BC%8C%E5%88%99%E8%87%AA%E5%8A%A8%E5%B0%86%E4%B8%80%E8%A1%8C%E6%B7%BB%E5%8A%A0%E5%88%B0%20Sheet-2%20%E4%B8%AD%E7%9A%84%E7%B1%BB%E4%BC%BC%E8%A1%A8%E4%B8%AD.png)
我在 excel 工作簿的 Sheet-1 中有以下表格。我想要一个 excel 公式,如果我将其添加到 Sheet-1 中的主表中,该公式可以让我自动将一行添加到 Sheet-2 中的类似表中。
示例:如果我在 Sheet-1 中添加名为“Jane”的行,该行应自动添加到 Sheet-2 中的类似表中。
Name Hours Rate Total
jhon 35 10 350
David 20 11 220
Mark 50 12 600
Hellen 40 11 440
Iren 40 13 520
Nicole 39 14 546
答案1
这是 VBA 解决方案。
1)打开 VBA 编辑器(Alt+ F11)
2)双击左侧项目资源管理器窗口中的工作表对象(它具有树结构)
3)粘贴此代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If TypeName(Target) = "Range" Then
If LenB(Target.Cells(1, 1).Value) > 0 Then
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target.SpecialCells(xlCellTypeLastCell).Row = UsedRange.Rows.Count Then
If UsedRange.Rows.Count > Sheet2.UsedRange.Rows.Count Then
For Each cell In Target.Cells
If Not Intersect(cell, Range("A:A")) Is Nothing Then Sheet2.Cells(Sheet2.UsedRange.Rows.Count + 1, 1).Value = cell.Value
Next
End If
End If
End If
End If
End If
Set cell = Nothing
End Sub
4) 根据需要更改值。最重要的内容如下:
4.1)如果列不在列上,Range("A:A")
则更改为列所在的位置。4.2 )更改为要复制值的工作表的 VBA 代码名称。代码名称是 VBA 编辑器左侧树中显示的内容。默认情况下,它是诸如、等。(它与选项卡名称默认值相同,但没有空格。)Name
A
Sheet2
Sheet1
Sheet2
要点:这只会添加行。它不会像删除 Sheet-1 上的内容那样删除它们。您可以这样做,但我尽量避免在 VBA 中删除内容,除非我非常确定,因为您无法轻松撤消该操作。