Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用来自固定列引用但来自当前活动行的内容动态更新单个单元格_Excel_Vba_Dynamic_Excel Formula - Fatal编程技术网

Excel 使用来自固定列引用但来自当前活动行的内容动态更新单个单元格

Excel 使用来自固定列引用但来自当前活动行的内容动态更新单个单元格,excel,vba,dynamic,excel-formula,Excel,Vba,Dynamic,Excel Formula,我试图让excel中的某个标题单元格根据我当前使用的行动态更新其内容,但地址有固定的列。因此标题内容的列引用将始终相同,但是,我希望根据我正在编辑的单元格(即活动单元格)更改行地址 因此,如果我点击单元格A2(“John”),我希望标题单元格(A1)用B2(“喜欢吃苹果”)的内容进行更新,同样,如果我点击单元格A4(“Peter”),我希望相同的标题单元格(A1)用B4的内容进行更新(“努力让自己变得很酷”) 我做了一些研究,我想也许我可以使用一些细胞功能或间接功能的组合,但我无法使其发挥作用。

我试图让excel中的某个标题单元格根据我当前使用的行动态更新其内容,但地址有固定的列。因此标题内容的列引用将始终相同,但是,我希望根据我正在编辑的单元格(即活动单元格)更改行地址

因此,如果我点击单元格A2(“John”),我希望标题单元格(A1)用B2(“喜欢吃苹果”)的内容进行更新,同样,如果我点击单元格A4(“Peter”),我希望相同的标题单元格(A1)用B4的内容进行更新(“努力让自己变得很酷”)

我做了一些研究,我想也许我可以使用一些细胞功能或间接功能的组合,但我无法使其发挥作用。我更喜欢使用一个简单的公式,但如果我需要做VBA,那就好了

(如果您建议使用VBA,请包括整个函数,因为我不懂语言)


有人能帮忙吗?

正如Scott Craner所建议的,您需要VBA中的“工作表选择更改”事件。由于您表示不熟悉VBA,我将向您详细介绍。首先,通过输入Alt+F11打开VBA编辑器。在VBA编辑器中,输入Ctrl+R以打开或跳转到project explorer(它通常是窗口左侧的窗格),然后双击要在其中执行功能的工作表的名称。现在输入以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not(Intersect(ActiveCell, Range("A:A")) Is Nothing) Then
        Cells(1, 1).Value = Cells(Selection.Row, 2)
    End If
End Sub

第一行告诉VBA,只要选择发生更改,它就应该执行代码。第二行检查您的选择是否在A列中。第三行实际起作用:它从所选行的第二列中获取值,并将该值放入A1。

这需要在vba中,在工作表_SelectionChange事件中。您可能希望放入一个intersect,使其仅在选定A列时触发。我希望在激活特定行的任何单元格时触发此事件,但谢谢。这是一个深思熟虑的问题在这种情况下,您应该删除我建议的代码中的第2行和第4行。对不起,我看不到代码中有任何地方允许我指定固定列,该列将始终用于填充动态单元格,而不考虑行。该代码将在何处输入?例如,我的示例中的源文本总是来自B列。看了您的代码后,我认为是2,但这对我来说很奇怪,因为excel使用字母来表示列。单元格(Selection.Row,2)是对选定单元格所在行的第二列(即B列)的引用
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not(Intersect(ActiveCell, Range("A:A")) Is Nothing) Then
        Cells(1, 1).Value = Cells(Selection.Row, 2)
    End If
End Sub