0

我不完全确定如何表达我想要做的事情,但我会尽我所能。

我想按点击顺序计算 Excel 中的非连续单元格。

例如,假设该列A有一个下拉列表,我希望列B以选择列A下拉列表的顺序记录。因此,如果一个人跳过A1:A3并选择,A4B4等于1;接下来他们选择A2然后设置B2=2

这是可能吗?我尝试过索引、vlookup、计数、辅助单元格,但似乎没有任何效果,因为我假设 Excel 以顺序方式思考,而我正在做的是试图解释看似随机的非顺序人类交互。

禁用迭代计算也不是一种选择,因为还有其他依赖于迭代的引用。

我知道 VBA,但只是非常轻松。任何帮助将不胜感激。谢谢你。

4

1 回答 1

0

将以下事件宏放在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, wf As WorksheetFunction
    Dim B As Range

    Set A = Range("A:A")
    Set B = Range("B:B")
    Set wf = Application.WorksheetFunction
    If Intersect(A, Target) Is Nothing Then Exit Sub
    If Target.Count <> 1 Then Exit Sub
    Application.EnableEvents = False
        Target.Offset(0, 1).Value = wf.Max(B) + 1
    Application.EnableEvents = True
End Sub

因为它是工作表代码,所以非常容易安装和自动使用:

  1. 右键单击 Excel 窗口底部附近的选项卡名称
  2. 选择查看代码 - 这将打开一个 VBE 窗口
  3. 粘贴这些东西并关闭 VBE 窗口

如果您有任何疑虑,请先在试用工作表上进行尝试。

如果您保存工作簿,宏将与它一起保存。如果您使用的是 2003 年以后的 Excel 版本,则必须将文件另存为 .xlsm 而不是 .xlsx

要删除宏:

  1. 如上所述调出 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有关事件宏(工作表代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

必须启用宏才能使其正常工作!

于 2016-04-11T11:35:07.043 回答