附两个重要的VBA代码:
代码一、
Public Sub 自动记录调查数据()
Dim Temp As Integer '定义一个用来保存工作表中单元格数据行数的整型变量
Dim count As Integer '定义一个用来保存调查结果记录行数的整型变量
Temp = Sheets("Sheet3").[A1].CurrentRegion.Rows.count
'将用于保存调查数据的工作表Sheet3的记录行数赋给count
count = Temp - 3 '工作表中有3行单元格保存字段名
Sheets("Sheet1").Select
Range("A32:L32").Select '在选定的工作表Sheet1选择待保存数据的区域
Selection.Copy '对选择的数据区域进行复制操作
Sheets("Sheet3").Activate '激活保存调查数据的工作表Sheet3
Rows(Temp + 1).Select '选择工作表中最后一条记录的下一行单元格区域
ActiveSheet.Paste '粘贴数据
Cells(Temp + 1, 13).Value = count + 1 '实现数据记录的自动编号功能
Sheets("Sheet1").Select
Application.CutCopyMode = False '释放进行复制操作的单元格区域
MsgBox "记录已成功保存,谢谢!", vbOKOnly, "确定" '以对话框的形式输出信息
End Sub
代码二、
Public Sub 统计调查数据()
Dim i, j, t As Integer '定义用于循环的整型变量
Dim count As Integer '定义用于保存记录数的整型变量
Dim Temp As Variant '定义用于读取单元格内容的变体型变量
count = Sheets("Sheet3").[A1].CurrentRegion.Rows.count
'将保存调查数据工作表的记录数赋值给count
Sheets("Sheet4").Select
For Each Temp In Range("B4:M9")
Temp.Value = "" '将单元格区域“B4:M9”的值置空
Next Temp
Sheets("Sheet3").Select
For i = 4 To count
For j = 1 To 12
t = j + 1 'Sheet3和Sheet4起始单元格之间有一个差值,即多了“选项数目”一列
Select Case Cells(i, j) '对工作表Sheet3中的单元格内容执行Select Case语句
Case 1
Worksheets("Sheet4").Cells(4, t) = Worksheets("Sheet4").Cells(4, t) + 1
'如果Sheet3中单元格值为1,则Sheet4中对应的单元格的统计数值加1
Case 2
Worksheets("Sheet4").Cells(5, t) = Worksheets("Sheet4").Cells(5, t) + 1
'如果Sheet3中单元格值为2,则Sheet4中对应的单元格的统计数值加1
Case 3
Worksheets("Sheet4").Cells(6, t) = Worksheets("Sheet4").Cells(6, t) + 1
Case 4
Worksheets("Sheet4").Cells(7, t) = Worksheets("Sheet4").Cells(7, t) + 1
Case 5
Worksheets("Sheet4").Cells(8, t) = Worksheets("Sheet4").Cells(8, t) + 1
Case 6
Worksheets("Sheet4").Cells(9, t) = Worksheets("Sheet4").Cells(9, t) + 1
End Select
Next j
Next i
Sheets("Sheet4").Select
Dim chtChart As Chart '定义一个图表类型变量chtChart
Set chtChart = Charts.Add '将添加的图表赋值给chtChart
With chtChart '使用With语句
.Location where:=xlLocationAsNewSheet '指定添加的此图表的位置