活动单元作为公式的输入

时间:2014-01-28 12:19:10

标签: excel vba excel-vba excel-formula excel-2010

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

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

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

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

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

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

有办法吗?如果可能,优选不使用VBA 找不到任何有用的东西......

提前致谢! 一个

2 个答案:

答案 0 :(得分:9)

您不需要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)

带有CELL参数的address函数返回活动的单元格的地址。我使用INDIRECT将该地址(只是一个字符串)转换为单元格引用。然后我用

=INDEX(Range, 1, Column of Reference)

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

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

答案 1 :(得分: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

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

修改

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