如何在Excel 2010中使用“触发器”将值转录成input的行名和列名?

我正在尝试使用某种触发器来允许此工作表的用户采用输出值(通过我创build的algorithm)并将其转录到另一个工作表中。

它应该将值转换成的单元格将由用户的行名和列名确定。

在这个例子中,用户将分别插入X和Y作为它们的行名和列名。 一旦他们点击触发button(不一定是一个button,我愿意使用任何types的触发器,但我认为必须有一个为了这个工作),价值在“价值(圆angular)”标记的细胞将被转录到相应的细胞:

这个单元格是我想要插入的值。

这个目标是自动化。 理想情况下,用户只需要input行名和列名,并按下一个button(或任何其他触发器),这将把值转录到另一张表。

这是否必须是VBA? 这可以用一个非常简单的公式完成。

假设:

  • input表被命名为Input (将所有对Input的引用改为该表的实际名称)
  • 行名称在单元格B1中(更改Input!$ B $ 1为实际行名称单元格)
  • 列名称在单元格B2中(将input!$ B $ 2更改为实际的列名称条目单元格)
  • 值(圆angular)单元格在B4中(将input!$ B $ 4更改为实际值(圆angular)单元格)

在我们的Output表单元格B2中, Output此公式,然后复制和复制:

 =IF(AND(Input!$B$1=$A2,Input!$B$2=B$1),Input!$B$4,"") 

添加button可以通过创build一个形状(矩形或任何其他)来完成,右键单击它并select“分配macros”。 在那里你可以select一个应该在点击该形状后执行的macros。 值得注意的是,macros观需要成为“公共分支”。

你需要在SHEET代码中使用事件macros(而不是模块代码)。 这里有两个例子,说明如何在特定的单元格上更改单元格或发生双击。

  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("E3")) Is Nothing Then 'Do something of Range("E3") has been double clicked '(Basic Example) 'Range("G3").Value = "Range("B3").value End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) 'If a cell has chanced... If Not Intersect(Target, Range("B3")) Is Nothing Then 'Do something End If End Sub