excel显示基于单元格“位置”列的内容的单元格

我试图根据特定列中单元格的相对位置(行)来更改单元格的值。 为了显示:

Name Up Down NoMove New Bob 0 0 1 0 Fred 0 0 1 0 Jane 0 0 1 0 Peter 0 0 1 0 etc 

外部来源将改变人们的地位(鲍勃,弗雷德)。 当发生这种情况时,4列应反映当前状态相对于以前的状态

 Name Up Down NoMove New Fred 1 0 0 0 Bob 0 1 0 0 Jane 0 0 1 0 Alan 1 0 0 1 etc 

我看遍了所有的Stackoverflow,但找不到任何可能的工作。 我甚至不确定是否有可能,但也许我没有正确的术语。 有人可以告诉我在哪里寻找或提供解决scheme? 谢谢!

你可以尝试一下这样的代码:

 Sub UpDown() Dim LastRow As Long Dim var As Variant Dim name As String Dim Position As Long With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow Range("B:B").Cells(i) = 0 Range("C:C").Cells(i) = 0 Range("D:D").Cells(i) = 0 Range("E:E").Cells(i) = 0 var = Application.Match(Range("A:A").Cells(i), Range("F:F"), 0) ' Not found If (IsError(var)) Then Range("E:E").Cells(i) = 1 ' Found Else Position = var ' Moved up If i < Position Then Range("B:B").Cells(i) = 1 Else ' Stayed the same If i = Position Then Range("D:D").Cells(i) = 1 Else ' Moved down Range("C:C").Cells(i) = 1 End If End If End If Next i 'Copy names For i = 2 To LastRow Range("F:F").Cells(i) = Range("A:A").Cells(i) Next i End With End Sub 

我将它分配给一个button来testing它,但是你也可以使它成为一个更改事件处理程序,以便每当A列中的某些内容发生更改时运行,或者按照此处所述在定时器上运行它。

起始条件: –

在这里输入图像说明

第一遍: –

在这里输入图像说明

第二遍: –

在这里输入图像说明