vba - 事件单元格作为公式的输入

标签 vba excel excel-formula excel-2010

我想知道是否可以使用事件单元格,我的意思是在单击鼠标后在给定时间用方形边框“突出显示”的单元格,作为函数中的参数。

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

我想要做的是让表格外部的单元格显示选择表格中的单元格时获得的平均值。

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

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

在这里我们看到单元格 K12 处于事件状态, 对于 K12,w1=0.2,w2=0.15,因此,上面权重表(第 3-4 行)中的单元格根据事件单元格中的权重获取适当的值。 (当然,我手动创建这个是为了说明目的)

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

提前致谢! 一个

最佳答案

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

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

=INDEX(Range, 1, Column of Reference)

获取 w1 值 - 第一行和事件单元格同一列中的值。该公式并不关心您激活哪个单元格,因此我在其中插入了一个 MAX ,这样如果您超出范围,它就会返回零。

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

关于vba - 事件单元格作为公式的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405521/

相关文章:

vba - 在某些计算机上,Excel VBA 中的 Outlook 空白 'To' 字段

Python 正则表达式删除\n

vba - 如何使用 VBA 过滤另一个工作表中的范围而不激活工作表

excel - 当有两个变量发生变化时如何在查找表中查找某些内容

excel - countifs 除了根据下拉列表计算变化的列

vba - 将 Excel 工作表(部分)的范围导出到 CSV

vba - 从 Access 中以编程方式打开的 Excel 工作表中删除 protected View

excel - 使用 VBA 宏 (Excel) 将切片器设置为变量的值

vba - 为什么 0 除以 0 会在 VBA 中引发溢出错误?

excel - 如何对同一行中不同列中具有相同文本值的列部分进行求和