我有一个代码可以自动填充 A 列中的系列。我的工作表受密码保护,只能编辑特定的单元格。
A 列是请求数据的依据或数量。例如:
Gee-2019-000
Gee-2019-001 ...
我只想要 A2 中的值Gee-2019-000改变。如果我输入Gee-2020-000位于 A2 上,其余部分将随之而来。例如:
Gee-2020-000
Gee-2020-001 ...
注意:仅 A2 允许编辑请求的数字。
这是我的代码。我实际上不知道该怎么做,但我尝试了一些方法以防万一,但结果却没有成功。
Dim target As Excel.Range
With target
If .Address = Range("A2").Address Then
.AutoFill Destination:=Range("A2:A1222"), Type:=xlFillDefault
End If
End With
答案1
用。。。来代替.AutoFill Destination:=Range("A2:A1222"), Type:=xlFillDefault
:
Dim r As Range
Dim prefixVal As String
Dim i As Integer
i = 1
prefixVal = Left(Range("A2"), InStrRev(Range("A2"),"-"))
For Each r In Range("A3:A1222")
r.Value = prefixVal & Format(i, "000")
i = i + 1
Next r
答案2
我建议宏将根据源值用增量填充目标单元格。
将此宏复制并粘贴为标准模块。
Sub IncremntValue() Dim code As String code = InputBox("Enter Code") Range("B1").Value = code Range("B2").Formula = "=LEFT(B1,9)&TEXT(ROW(A1),""000"")" Range("B2").Select Selection.AutoFill Destination:=Range("B2:B200"), Type:=xlFillDefault End Sub
你会得到如下结果:
- 我假设 INPUT 值为
Gee-2019-000
。
一旦您修改 B1 中的源值或输入任何新代码,您就会得到以下结果:
注意:
- 用于输入框使得代码更加高效、快捷。
- 我使用的公式
=LEFT(B1,9)&TEXT(ROW(A1),""000"")"
是情境化的,如果单元格中的代码组成B1
发生变化,则可能会有所不同。 - 根据需要调整公式中的单元格引用。
編輯:
实现自动化自动填充事件最好使用带有工作表变更事件,而不是简单宏。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$A$1")) Is Nothing Then
Range("A2").Formula = "=LEFT($A$1,9)&TEXT(ROW(A1),""000"")"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A20"), Type:=xlFillDefault
End If
End Sub