我有一系列的四个细胞。最左边的单元格(A列)是唯一值。右边的下三个单元格填充了公式。列B和C是Vlookup,当填充列A时从表2中提取值(否则单元格的值为“”)。当一个值放入A列时,D列填充当前日期(否则单元格的值也为“”)。
我想要做的是在将一个唯一值放入A列时运行一个宏,它会杀死B,C,D中的公式并保留它们的值。然后它会自动选择A列后续行中的单元格.A3是固定的,这就是我使用End(xlDown)
方法然后使用Activecell.Offset
的原因。
这就是我在运行时轰炸Excel的原因:
Private Sub Worksheet_Change(ByVal Target As Range)
Range(ActiveCell, ActiveCell.Offset(0, 3)).Value = Range(ActiveCell, ActiveCell.Offset(0, 3)).Value
Range("A3").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End Sub
答案 0 :(得分:1)
以下是一些可以帮助您入门的通用代码。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("A")) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim rng As Range
For Each rng In Intersect(Target, Columns("A"))
If Not IsError(rng.Offset(0, 1)) Then
rng.Resize(1, 3) = rng.Resize(1, 3).Value
End If
Next rng
With Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'optionally put in new VLOOKUP formulas in column B and C
'.Offset(0, 1).FormulaR1C1 = "=VLOOKUP(RC1, Sheet2!C1:C3, 2, FALSE)"
'.Offset(0, 2).FormulaR1C1 = "=VLOOKUP(RC1, Sheet2!C1:C3, 3, FALSE)"
.Select
End With
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub