1、电脑上面打开Excel表格,按下【Alt+F11】组合键调出VBA编辑器,或者点击Excel表格上方的【开发工具】,【Visual Basic】。
2、在VBA编辑器里边的VBA项目下方双击“Sheet1”工作表,在打开的代码窗口里边输入以下程序代码:Private Sub Worksheet_SelectionCha荏鱿胫协nge(ByVal Target As Range)'当工作表上的选定区域发生改变时执行On Error Resume Next '忽略运行过程中出现的错误Dim r, ro, c, co, i, j As Long '数据类型定义Set mySheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表r = Target.Row '选择的第几行,选择多行时只默认第一行ro = Target.Rows.Count '总共选择多少行c = Target.Column '选择的第几列,选择多列时只默认第一列co = Target.Columns.Count '总共选择多少列For i = 2 To 1000 '从第2行执行到1000行 If mySheet1.Cells(i, 6) <> "" And mySheet1.Cells(i, 2) <> "" Then '如果两列对应的单元格都不为空白,则执行其计算 mySheet1.Cells(i, 7) = mySheet1.Cells(i, 6) * mySheet1.Cells(i, 2) End IfNextIf ro <= 1000 And co < 50 Then '选择的范围小于等于1000行,小于50列 For j = 1 To ro '从1执行到选择的多少行 If r > 1 And c > 2 And c < 6 And mySheet1.Cells(r + j - 1, c) <> "" And _ mySheet1.Cells(r + j - 1, 6) <> "" Then'如果选择的单元格从第二行开始,且在第3到第5列之间,并且单元格不为空白,则执行计算'下划线“_”为程序的连接符,毕竟程序语句不想写那么长,所以换行 mySheet1.Cells(r + j - 1, 7) = mySheet1.Cells(r + j - 1, 6) * _ mySheet1.Cells(r + j - 1, c) End If NextEnd IfEnd Sub
3、程序思路:(1)选择的单元格是要单独计算,其余的单元格也要计算,而程序的计算顺序是从上往下的,因此,可以先全部计算,之后再单独对选择的单元格进行计算。(2)写VBA程序的时候,为了防止选择一整行或一整列而出现卡死的现象发生,所以就在选择的范围里边加了个限制的条件。
4、回到Excel表格工作表界面,选择单元格时将会根据选择的单元格进行自动计算。
5、选择其他单元格时,它将会按照B列与F列对应的单元格相乘计算。
6、如果选择的区域里边含有多列时,它将会以选择区域里边的第一列进行计算。