网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月31日漏签0天
excel吧 关注:282,034贴子:1,557,475
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回excel吧
>0< 加载中...

能不能用excel vba实现排序数据后复制表单到新的工作表中

  • 只看楼主
  • 收藏

  • 回复
  • 本名叫奇异
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如一个学生的成绩表,总分排序一次把排名的学生姓名和排名复制到一个新的表里,语文科再排名一次再复制到新的表里,各个科目都这样操作一次


  • 菠萝蜜
  • E览无余
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Option Explicit
Sub abc()
 Dim a, i, j, n
 a = [a1].CurrentRegion.Value
 ReDim b(1 To UBound(a), 1 To (UBound(a, 2) - 1) * 3)
 For j = 2 To UBound(a, 2)
  Call bsort(a, 2, UBound(a), 1, UBound(a, 2), j)
  n = n + 3: b(1, n) = "排名"
  For i = 1 To UBound(a)
   b(i, n - 2) = a(i, 1): b(i, n - 1) = a(i, j)
  Next
  Call rank(b, 2, UBound(b), n - 1, n, True)
 Next
 [a1].Offset(, UBound(a, 2) + 1).Resize(UBound(b), UBound(b, 2)) = b
End Sub
Function bsort(a, first, last, left, right, key)
 Dim i, j, k, t
 For i = first To last - 1
  For j = first To last + first - 1 - i
   If a(j, key) < a(j + 1, key) Then
    For k = left To right
     t = a(j, k): a(j, k) = a(j + 1, k): a(j + 1, k) = t
    Next
   End If
  Next
 Next
End Function
Function rank(a, first, last, key, col, order As Boolean)
 Dim i As Long, j As Long, m As Long
 m = 1: a(first, col) = 1
 For i = first + 1 To last
  If order Then
   m = m + 1
  Else
   If a(i, key) <> a(i - 1, key) Then m = m + 1
  End If
  If a(i, key) = a(i - 1, key) Then
   a(i, col) = a(i - 1, col)
  Else
   a(i, col) = m
  End If
 Next
End Function


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示