多语言展示
当前在线:475今日阅读:2今日分享:31

Excel根据选择的单元格自动计算

如下表所示,选择C2:E1000区域里面的单元格时,将会按照选择的单元格与F列对应的单元格相乘(如:选择C2:C5,将会与之对应的F2:F5相乘之后写入G列对应的单元格G2:G5),否则将会按照B列与F列对应的单元格相乘,计算结果写入G列对应的单元格。如果要执行此功能,只能使用VBA程序进行处理。
工具/原料
1

计算机

2

Excel 2010

方法/步骤
1

电脑上面打开Excel表格,按下【Alt+F11】组合键调出VBA编辑器,或者点击Excel表格上方的【开发工具】,【Visual Basic】。

2

在VBA编辑器里边的VBA项目下方双击“Sheet1”工作表,在打开的代码窗口里边输入以下程序代码:Private Sub Worksheet_SelectionChange(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

如果选择的区域里边含有多列时,它将会以选择区域里边的第一列进行计算。

注意事项

个人经验,仅供参考。

推荐信息