在Excel 表1一个固定的地方做数据输入,在表2中记录数据。当表1有数据输入时,自动保存到表2第一行中
展开全部
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, r As Integer, c As Integer, d As String
If Target.Areas.Count > 1 Or Target.Areas(1).Count > 1 Then
MsgBox "只能对一个单元格进行修改!"
Exit Sub
End If
If Target.Row <> 1 Then Exit Sub
d= num2letter(Target.Column)
If d = "" Then Exit Sub
i = Sheet2.Range(d & 65536).End(xlUp).Row
If i = 1 And Len(Sheet2.Cells(1, Target.Column)) = 0 Then i = 0
Sheet2.Cells(i + 1, Target.Column) = Cells(Target.Row, Target.Column)
End Sub
Function num2letter(n As Integer) As String
If n >= 1 And n <= 256 Then
num2letter = IIf(n < 26, Mid(Cells(1, n).Address, 2, 1), Mid(Cells(1, n).Address, 2, 2))
Else
num2letter = ""
End If
End Function
你放到开发工具>Visual Studio>Sheet1下试试,修改sheet1下的第一行任何一列的数据,在sheet2中都会记录下来,同时会记录修改历史。
Dim i As Integer, r As Integer, c As Integer, d As String
If Target.Areas.Count > 1 Or Target.Areas(1).Count > 1 Then
MsgBox "只能对一个单元格进行修改!"
Exit Sub
End If
If Target.Row <> 1 Then Exit Sub
d= num2letter(Target.Column)
If d = "" Then Exit Sub
i = Sheet2.Range(d & 65536).End(xlUp).Row
If i = 1 And Len(Sheet2.Cells(1, Target.Column)) = 0 Then i = 0
Sheet2.Cells(i + 1, Target.Column) = Cells(Target.Row, Target.Column)
End Sub
Function num2letter(n As Integer) As String
If n >= 1 And n <= 256 Then
num2letter = IIf(n < 26, Mid(Cells(1, n).Address, 2, 1), Mid(Cells(1, n).Address, 2, 2))
Else
num2letter = ""
End If
End Function
你放到开发工具>Visual Studio>Sheet1下试试,修改sheet1下的第一行任何一列的数据,在sheet2中都会记录下来,同时会记录修改历史。
更多追问追答
追问
不知是不是我不会弄,提示有错误。
追答
把你QQ号给我,我给你看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用公式无法实现。只有VBA。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询