如下表所示,选择C2:E1000区域里声矜檠鹣面的单元格时,将会按照选择的单元格与F列对应的单元格相乘(如:选择C2:C5,将会与之对应的F2多唉捋胝:F5相乘之后写入G列对应的单元格G2:G5),否则将会按照B列与F列对应的单元格相乘,计算结果写入G列对应的单元格。如果要执行此功能,只能使用VBA程序进行处理。
工具/原料
计算机
Excel2010
方法/步骤
1、电脑上面打开Excel表格,按下【Alt+F11】组合键调出VBA编辑器,或者点击Excel表格上方的【开发工具】,【VisualBasic】。
2、在VBA编辑器里边的VBA项目下方双击“Sheet1”工作表,在打开的代码窗口里边诶受祗错输入以下程序代码:PrivateSubWorksheet_SelectionCha荏鱿胫协nge(ByValTargetAsRange)'当工作表上的选定区域发生改变时执行OnErrorResumeNext'忽略运行过程中出现的错误Dimr,ro,c,co,i,jAsLong'数据类型定义SetmySheet1=ThisWorkbook.Worksheets("Sheet1")'定义工作表r=Target.Row'选择的第几行,选择多行时只默认第一行ro=Target.Rows.Count'总共选择多少行c=Target.Column'选择的第几列,选择多列时只默认第一列co=Target.Columns.Count'总共选择多少列Fori=2To1000'从第2行执行到1000行IfmySheet1.Cells(i,6)<>""AndmySheet1.Cells(i,2)<>""Then'如果两列对应的单元格都不为空白,则执行其计算mySheet1.Cells(i,7)=mySheet1.Cells(i,6)*mySheet1.Cells(i,2)EndIfNextIfro<=1000Andco<50Then'选择的范围小于等于1000行,小于50列Forj=1Toro'从1执行到选择的多少行Ifr>1Andc>2Andc<6AndmySheet1.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)EndIfNextEndIfEndSub
3、程序思路:(1)选择的单元格是要单独计算,其余的单元格也要计算,而程序的计算顺序是从上往下的,因此,可以先全部计算,之后再单独对选择的单元格进行计算。(2)写VBA程序的时候,为了防止选择一整行或一整列而出现卡死的现象发生,所以就在选择的范围里边加了个限制的条件。
4、回到Excel表格工作表界面,选择单元格时将会根据选择的单元格进行自动计算。
5、选择其他单元格时,它将会按照B列与F列对应的单元格相乘计算。
6、如果选择的区域里边含有多列时,它将会以选择区域里边的第一列进行计算。