活动单元作为公式的输入

Opt*_*esh 5 excel vba excel-vba excel-formula excel-2010

我想知道我是否可以使用活动单元格,我的意思是在给定时间用鼠标点击后,在给定时间"突出显示"的单元格作为函数中的参数.

例如,我创建了一个加权平均值为3个权重的表:列标题中给出了w1(请参阅下面的文件),行标题中给出了w2,w3对w1和w2进行了补充.

我想要做的是让表格外的单元格显示当选择表格中的单元格时平均得到的权重.

例如:截图:http://imgur.com/emmBH5S/

文件可以在这里找到:https://drive.google.com/file/d/0B_7-00fdslR7Tm11ODRVS296ckk/

这里我们看到单元格K12是活动的,并且对于K12 w1 = 0.2,w2 = 0.15,因此,上面权重表(第3-4行)中的单元格根据活动单元格中的权重得到适当的值.(当然我手动创建这个用于说明目的)

有没有办法做到这一点?如果可能,最好没有VBA找不到任何非常有用的东西......

提前致谢!一个

Dic*_*ika 10

你不需要VBA(尽管你可能更喜欢它).

W1: =INDEX($F$8:$AA$29,1,MAX(COLUMN(INDIRECT(CELL("address")))-(COLUMN(F8)-1),1))
W2: =INDEX($F$8:$AA$29,MAX(ROW(INDIRECT(CELL("address")))-(ROW(F8)-1),1),1)
W3: =J4-(G4+H4)
Run Code Online (Sandbox Code Playgroud)

CELLaddress参数的函数返回活动单元格的地址.我INDIRECT用来将该地址(只是一个字符串)转换为单元格引用.然后我用

=INDEX(Range, 1, Column of Reference)
Run Code Online (Sandbox Code Playgroud)

获取w1值 - 第一行中的值以及与活动单元格相同的列.公式并不关心你激活的是什么单元格,所以我MAX在那里插入了一个,所以如果你超出范围,它将返回零.

请注意,仅选择单元格不会触发更改.选择单元格后,按F9计算工作表以获得正确的结果.


hst*_*tay 5

您需要使用VBA.按照您的示例将此代码放在Sheet对象中

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row > 8 And Target.Column > 6 Then
        Range("G4").Value = Cells(8, Target.Column).Value
        Range("H4").Value = Cells(Target.Row, 6).Value
        Range("L4").Value = Cells(Target.Row, Target.Column).Value
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

单元格L4显示您选择的单元格值,可以在其他公式中使用.

编辑

要放置代码,请转到VBA窗口,然后双击您拥有数据的Sheet对象.(在图片中标有箭头)然后粘贴你的代码. Worksheet对象中的代码