Excel 当单元格中的新数据发生更改时,在顶部移动一行数据

Excel 当单元格中的新数据发生更改时,在顶部移动一行数据,excel,vba,excel-formula,Excel,Vba,Excel Formula,我到处找了,但还没有找到工作的解决办法 我有一张数据表,由b PLC更新到我工厂的控制系统。例如,“workstation1”如果当前正在工作,将返回一个信号作为1,如果停止,则返回0。对于工作站2,3,4,依此类推 我正在处理的工作表已经显示了站点的状态(0或1),与A列中的站点名称类似,而状态在B列中。 问题是,我想当一个站点的状态改变(1到0或0到1)时,该站点的整行都会一直移动到表的顶部,以便我可以检查哪个站点最近运行过。这有可能做到吗? 1另一个问题是,更改的数据由PLC自动填充。我尝

我到处找了,但还没有找到工作的解决办法

我有一张数据表,由b PLC更新到我工厂的控制系统。例如,“workstation1”如果当前正在工作,将返回一个信号作为1,如果停止,则返回0。对于工作站2,3,4,依此类推

我正在处理的工作表已经显示了站点的状态(0或1),与A列中的站点名称类似,而状态在B列中。 问题是,我想当一个站点的状态改变(1到0或0到1)时,该站点的整行都会一直移动到表的顶部,以便我可以检查哪个站点最近运行过。这有可能做到吗? 1另一个问题是,更改的数据由PLC自动填充。我尝试了一些marco,当新数据通过键盘“输入”时触发,它不起作用。
提前感谢您,并对我的英语不好表示歉意。

在VBA编辑器的左侧选择此工作簿,然后在左侧下拉菜单的顶部选择工作簿,然后在右侧下拉菜单中选择SheetChange。 包括以下代码:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column = 2 and Target.Row>2 Then 'after a value changes in B column
        Application.EnableEvents = False ' to prevent this change from being seen as another change and causing a loop
        Target.EntireRow.Cut
        sh.Range("A2").EntireRow.Insert Shift:=xlDown 'A2 because I'm assuming you have a header in your first row
        Application.EnableEvents = True 'next sheet changes will cause this to run again
    End If
End Sub

但是,如果数据自动更新,相同的操作是否会将更新的行置于顶部?PLC im使用将数据放入单元格,而不是更新整个工作表。PLC链接及其excel外接程序,只是一个帮助您选择将接收到的数据放入哪个单元格的工具。谢谢您的详细回答。我将在下一个工作日进行测试,并让您随时了解最新情况。谢谢你能告诉我如何使它只影响一张纸吗?哦,我知道了。谢谢你的回答!我刚刚注意到,如果单元格值被VLOOKUP更改,则顺序不会更改。你能帮忙吗?