Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14598|回复: 10

[已解决]请问下怎样实现工作表中两个列相乘的结果在另外一列中实现,

[复制链接]
发表于 2011-4-15 23:18 | 显示全部楼层 |阅读模式
本帖最后由 cxc11 于 2011-4-15 23:25 编辑

请问下高手们怎样才能实现工作表中两列每个单元格的数值分别相乘的结果在另外一列的单元格中显示出来,然后再用这个结果和后面一列单元格中的数值相乘在后面列的单元格中显示出来,也就是这个意思

                             A                 B             C             D              E
                             1     *         2    =         3         *    4    =          12
                             2       *       3      =       6           *  2      =        12


最佳答案
2011-4-16 00:46
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r_ren%, i%, arr
r_end = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("a1:e" & r_end)
    If Target.Column = 3 Then
        For i = 1 To r_end
            arr(i, 3) = arr(i, 1) * arr(i, 2)
                If arr(i, 3) = 0 Then
                    arr(i, 3) = ""
                End If
            Next i
        [a1].Resize(r_end, 3) = arr
     End If
     If Target.Column = 5 Then
         For i = 1 To r_end
              If arr(i, 3) <> 0 Then
                 arr(i, 5) = arr(i, 3) * arr(i, 4)
                     If arr(i, 5) = 0 Then
                         arr(i, 5) = ""
                     End If
                 End If
             Next i
          [a1].Resize(r_end, 5) = arr
      End If
End Sub
 楼主| 发表于 2011-4-15 23:47 | 显示全部楼层
我的意思是可不可以用vba编写一段代码,当我在a和b列的单元格中填入数值的时候,c列就自动输出结果,当我再在e列输入数值的时候,f列又会自动输出结果,谢谢
回复

使用道具 举报

发表于 2011-4-15 23:53 | 显示全部楼层
Sub aa()
Dim i%, arr
r_end = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("a1:e" & r_end)
    For i = 1 To r_end
        arr(i, 3) = arr(i, 1) * arr(i, 2)
        arr(i, 5) = arr(i, 3) * arr(i, 4)
    Next i
    [a1].Resize(r_end, 5) = arr
End Sub
回复

使用道具 举报

发表于 2011-4-15 23:59 | 显示全部楼层
函数可以解决的为什么要用VBA?
回复

使用道具 举报

 楼主| 发表于 2011-4-16 00:05 | 显示全部楼层
还有一个问题,可不可以实现在鼠标点击c列的时候自动出现结果,然后再点f列的时候又自动出现c列和e列相乘的结果,重点是鼠标点击后自动产生结果,谢谢了
回复

使用道具 举报

发表于 2011-4-15 23:31 | 显示全部楼层
C1里的公式
  1. =A1*B1
复制代码
E1里的公式
  1. =C1*D1
复制代码
回复

使用道具 举报

发表于 2011-4-16 00:11 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r_ren%, i%, arr
r_end = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("a1:e" & r_end)
    If Target.Column = 3 Then
        For i = 1 To r_end
            arr(i, 3) = arr(i, 1) * arr(i, 2)
            Next i
        [a1].Resize(r_end, 3) = arr
     End If
     If Target.Column = 5 Then
        For i = 1 To r_end
            arr(i, 5) = arr(i, 3) * arr(i, 4)
            Next i
        [a1].Resize(r_end, 5) = arr
     End If
End Sub
复制以上代码到操作表
回复

使用道具 举报

 楼主| 发表于 2011-4-16 00:17 | 显示全部楼层
谢谢了,不过还有一个小问题,就是在c列的结果出来之后,如果e列单中没有数值的,这时在f列中点击的结果是0,可不可以为空呢?
回复

使用道具 举报

发表于 2011-4-16 00:46 | 显示全部楼层    本楼为最佳答案   
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r_ren%, i%, arr
r_end = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("a1:e" & r_end)
    If Target.Column = 3 Then
        For i = 1 To r_end
            arr(i, 3) = arr(i, 1) * arr(i, 2)
                If arr(i, 3) = 0 Then
                    arr(i, 3) = ""
                End If
            Next i
        [a1].Resize(r_end, 3) = arr
     End If
     If Target.Column = 5 Then
         For i = 1 To r_end
              If arr(i, 3) <> 0 Then
                 arr(i, 5) = arr(i, 3) * arr(i, 4)
                     If arr(i, 5) = 0 Then
                         arr(i, 5) = ""
                     End If
                 End If
             Next i
          [a1].Resize(r_end, 5) = arr
      End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-4-16 10:31 | 显示全部楼层
结果很满意,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 22:06 , Processed in 0.307256 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表