使用场景
当需要将一个表格里的数据获取。然后往另外一个表格里填充的时候可以通过excel vba编程达到对数据快速处理的方式。虽然现在比较流行Python,但是VBA贵在不用准备环境。
例如将表1成绩姓名填到表2里。


点击 ALT+F11,进入VBA界面。

右键点击Microsoft Excel 对象->插入->模块。

双击新建的模块,输入代码。

然后回到表格->ALT+F8->选中刚刚写的函数->点击执行。

姓名修改后结果如图

代码如下图
@Override
Sub FillCellsBasedOnN()
Dim n As Integer
Dim lastN As Integer
Dim targetCell As Range
Dim sourceCell As Range
' 此代码只写了姓名数据怎么替换
' 你可以根据需要设置lastN的值,它表示你想要填充的最后一个值在第几行
lastN = 36
' 循环从1到lastN
For n = 1 To lastN
' 需要填充数据目标单元格的地址,例如B2, B6, B10, B14, B16...
Set targetCell = ThisWorkbook.Sheets("Sheet2").Range("B" & (n * 4 - 2))
' 要填充数据单元格的地址,例如B2, B3, B4, B5...
Set sourceCell = ThisWorkbook.Sheets("Sheet1").Range("B" & (n + 1))
' 将源单元格的值赋给目标单元格
targetCell.Value = sourceCell.Value
Next n
End Sub

具体下标怎么求,目标单元格是B(kx+b),x表示第几个.,其实就是二元一次方程。
y=kx+b。
目标单元格需要填充B2,B6。
所以 2 = 1k+b,6=2k+b。
算出来目标单元格就是B(4*x-2),源单元格就是B(N+1)。
再把编号,数学,语文和英语的代码加上就是
@Override
Sub FillCellsBasedOnN()
Dim n As Integer
Dim lastN As Integer
Dim targetCell As Range
Dim sourceCell As Range
' 你可以根据需要设置lastN的值,它表示你想要填充的最后一个值在第几行
lastN = 36
' 循环从1到lastN
For n = 1 To lastN
'姓名
' 需要填充数据目标单元格的地址,例如B2, B6, B10, B14, B16...
Set targetCell = ThisWorkbook.Sheets("Sheet2").Range("B" & (n * 4 - 2))
' 要填充数据单元格的地址,例如B2, B3, B4, B5...
Set sourceCell = ThisWorkbook.Sheets("Sheet1").Range("B" & (n + 1))
' 将源单元格的值赋给目标单元格
targetCell.Value = sourceCell.Value
'编号
Set targetCell1 = ThisWorkbook.Sheets("Sheet2").Range("D" & (n * 4 - 2))
Set sourceCell1 = ThisWorkbook.Sheets("Sheet1").Range("A" & (n + 1))
targetCell1.Value = sourceCell1.Value
'数学
Set targetCell2 = ThisWorkbook.Sheets("Sheet2").Range("B" & (n * 4 - 1))
Set sourceCell2 = ThisWorkbook.Sheets("Sheet1").Range("C" & (n + 1))
targetCell2.Value = sourceCell2.Value
'语文
Set targetCell3 = ThisWorkbook.Sheets("Sheet2").Range("D" & (n * 4 - 1))
Set sourceCell3 = ThisWorkbook.Sheets("Sheet1").Range("D" & (n + 1))
targetCell3.Value = sourceCell3.Value
'英语
Set targetCell4 = ThisWorkbook.Sheets("Sheet2").Range("F" & (n * 4 - 1))
Set sourceCell4 = ThisWorkbook.Sheets("Sheet1").Range("E" & (n + 1))
targetCell4.Value = sourceCell4.Value
Next n
End Sub
3万+

被折叠的 条评论
为什么被折叠?



