Excel 自动评分

Excel 自动评分

好的,假设我有一个电影名称列表。为了简单起见,假设有 5 个电影名称。在下一列中,我根据我对电影的看法给出了评级,从 1 到 5,因为有 5 个名称。
以下是一个例子:

电影 A -> 2
电影 B -> 1
电影 C -> 3
电影 D -> 5
电影 E -> 4

现在假设我想添加一部评分为 3 的新电影,因为我比电影 C、D 和 E 更喜欢它。

电影 F -> 3

由于我现在将
电影 C -> 3 和电影 F -> 3,
评级将不得不改变,对吗?所以我正在寻找一个命令或公式,我可以使用它来自动制作:

  • 电影 C 获得 4 (3+1) 评分
  • 电影 D 的评分为 6(5+1)
  • 电影 E 获得 5 分(4+1)

因此,在我添加“电影 F -> 3”之后,列表将自动更新为

电影 A -> 2
电影 B -> 1
电影 C -> 4
电影 D -> 6
电影 E -> 5
电影 F -> 3

有任何想法吗?

答案1

以下是u1016274的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B:B"), Target) Is Nothing Then Exit Sub
   v = Target.Value
   addy = Target.Address(0, 0)
   Application.EnableEvents = False
      For Each r In Intersect(Range("B:B"), ActiveSheet.UsedRange)
         If r.Address(0, 0) <> addy And r.Value >= v Then
            r.Value = r.Value + 1
         End If
      Next r
   Application.EnableEvents = True
End Sub

因此如果我们从以下开始:

在此处输入图片描述

并添加愤怒的公牛作为第 3 个,我们将得到:

在此处输入图片描述

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

  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

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

答案2

这是我的想法(无代码)。1
. 编写一个 VBA 例程,当 B 列中的值发生变化时运行(“Private Sub Worksheet_Change(ByVal Target As Range)”)。
2. 检查目标是否为 B 列中的单元格。3
. 将当前选择的值保存在变量中

new = Selection.value

4. 比较 B 列中从第 1 行到最后一个非空行的所有单元格值是否大于或等于新值。如果相等,并且与所选内容位于同一行,则跳过。对于所有其他情况,将值增加 1。

相关内容