急求excel中函数或VB代码实现控制单元格数据

如图1,在A1中输入5,在B1至B5中自动填充上特定数据(以字母A为例)

如图2在A中输入数字6,在B1至B6中自动填充上特定数据(以字母A为例)
以此类推在A1中办输入数字N,在B1至Bn中自动填充上特定数据(以字母A为例)
如图3在A1中输入值2在A2中输入值3,在B1至B2中自动填充上特定数据,在B3至B5中自动填充上特定数据(以字母A、B为例)

如图4,按上述逻辑推论,A列输入数值,B列会按数值顺序生成数据
最新回答
花月似霰

2025-06-27 11:31:58

如图我的理解是:A1的值是B列中“A”的个数,A2的值是B列中“B”的个数。。。

按此思路,以下宏满足你的要求,且可随时更改A列中各值
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Dim bf, aRow, bRow, a, b, bLine, aArr, bArr
Range("B:B").ClearContents
aRow = [A1000].End(xlUp).Row
If aRow = 1 Then
bLine = Target.Value
bArr = Range("B1:B" & bLine).Value
For b = 1 To bLine
bArr(b, 1) = "A"
Next
Else
aArr = Range("A1:A" & aRow).Value
For a = 1 To aRow
bLine = bLine + aArr(a, 1)
Next
bArr = Range("B1:B" & bLine).Value
bRow = 1
For a = 1 To aRow
If Len(bf) Then
bf = Chr(Asc(bf) + 1)
Else
bf = "A"
End If
For b = bRow To aArr(a, 1) + bRow - 1
bArr(b, 1) = bf
Next b
bRow = bRow + aArr(a, 1)
Next a
End If
Range("B1:B" & bLine) = bArr
End If
End Sub

代码已验证,可放心使用
追问
请问如何使用,能不能发个具体操作步骤截图给我?在Excel中VBA宏代码是以sub开头的,如果建一个宏然后贴代码进去,关掉代码窗口就找不到代码了……
追答
例如在sheet1表中使用。打开vb编辑器,双击左上部“工程”下的“sheet1”,把代码复制到右边的代码窗口中即可

使用:每次当你在“sheet1”表的A列中输入值后,代码会自动执行,在B列中生成结果
容嬷嬷的春天

2025-06-27 12:44:00

用VBA是好弄,但是首先你得有一个对应的表~就是你A列填的数和B列显示的数的对应的表~
追问
嗯,这个可以做成一个数据表,但A列的数不是一个定值,B列的数据是一个引用的数据。
那VBA代码是怎么样的?求详解,谢谢
追答
假设你sheet2的A、B列放的是你的对应表
sheet1的你填写显示的表
代码:
Sub test()
Dim ends%, rng As Range, ends1%, arr, i%
Sheet1.Range("b:b").ClearContents
ends2 = Sheet2.Cells(Rows.Count, "a").End(xlUp).Row
arr = Sheet2.Range("a1:b" & ends2)
ends = Sheet1.Cells(Rows.Count, "a").End(xlUp).Row
For Each rng In Sheet1.Range("a1:a" & ends)
ends1 = Sheet1.Cells(Rows.Count, "b").End(xlUp).Row
If ends1 = 1 Then
For i = 1 To UBound(arr)
If rng = arr(i, 1) Then
Sheet1.Cells(ends1, 2).Resize(rng * 1) = arr(i, 2)
End If
Next
Else
For i = 1 To UBound(arr)
If rng = arr(i, 1) Then
Sheet1.Cells(ends1 + 1, 2).Resize(rng * 1) = arr(i, 2)
End If
Next
End If
Next
End Sub
追问
能不能发个测试截图给我,我用宏代码测试不成功