Excel宏编程代码,根据混合的名次合并计算进退值

原始的期中名次,保存在sheet4中,以sheet4的C和D来存储期末名次和进退值
在这里插入图片描述
期末名次在Sheet5:
在这里插入图片描述
由于sheet4和sheet5是乱序的,所以需要匹配合并,先用Excel查看代码:
在这里插入图片描述
直接上代码:
在这里插入图片描述

Sub 合并名次排序()
arr4A = Worksheets("sheet4").Range("A1")  '选择sheet4 A列
arr4A = Worksheets("sheet4").UsedRange
arr4B = Worksheets("sheet4").Range("B1")  '选择sheet4 B列
arr4B = Worksheets("sheet4").UsedRange

arr5A = Worksheets("sheet5").Range("A1")  '选择选择sheet5 A列
arr5A = Worksheets("sheet5").UsedRange
arr5B = Worksheets("sheet5").Range("B1")  '选择选择sheet5 B列
arr5B = Worksheets("sheet5").UsedRange

Dim A4Row As Long  'sheet4 列的行数
Dim A5Row As Long  'sheet5 A列的行数

A4Row = Sheet4.Range("A" & Rows.Count).End(xlUp).Row    'Sheet4 A列不带空格的行数
A5Row = Sheet5.Range("A" & Rows.Count).End(xlUp).Row    'Sheet5 A列不带空格的行数

Set d = CreateObject("Scripting.Dictionary")   '设置个字典类型的容器,d(s)是字典,键值对,键是姓名,值是名次
ReDim brrc(1 To A4Row, 1)   '设置新的待写入C列数
ReDim brrd(1 To A4Row, 1)   '设置新的待写入D列数

For n = 2 To A5Row           '循环Sheet5 A列,从第二行开始,看你需要从哪个行开始
    s = arr5A(n, 1)               '将从第二行开始的读取姓名
    d(s) = arr5B(n, 2)            '将姓名和名次组装成键值对存储在d中
Next

For n = 2 To A4Row           '循环Sheet4 A列数据,从第二行开始,看你需要从哪个行开始
    s = arr4A(n, 1)               '将从第二行开始的读取姓名
    If d.Exists(s) Then  '如果s这个值不在字典d里,说明不重复,就加入brr()第一列中,如果单元格是空格就跳过
      i = i + 1
    brrc(i, 1) = d(s)   '根据名字取出对应的期末名次存入brrc,代表C列数据
    End If
Next

For n = 2 To A4Row           '循环B列数据,从第二行开始,看你需要从哪个行开始
    sb = arr4A(n, 2)               '将从第二行开始的数据全部塞入s里
    j = j + 1
    sc = brrc(j, 1)
    brrd(j, 1) = sb - sc    'B列减去C列值,代表进退值
Next
Worksheets("sheet4").[C2].Resize(UBound(brrc), 1) = Application.Index(brrc, 0, 2)
Worksheets("sheet4").[D2].Resize(UBound(brrd), 1) = Application.Index(brrd, 0, 2)
End Sub


最终运行效果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值