ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 273|回复: 5

[求助] 如何利用上一行的结果作为索引值对下一行进行排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-12-26 15:25 | 显示全部楼层 |阅读模式
用VBA实现以下功能:将38-21行每行的结果依次作为索引值赋予下一行,比如先将“2-19行包含单元格所在行A(一个或两个)的单元格数量”赋予第20行,按索引值从大到小排列第20行;然后将“2-18行包含单元格所在行A(一个或两个)的单元格数量”赋予第19行,按索引值从大到小排列第19行,依次处理。

其中用到了自定义函数ZC,代码在文件中

01 (2).rar

18.35 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2023-12-30 11:57 | 显示全部楼层
请参考一下。

01 (3).zip

18.71 KB, 下载次数: 7

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-3 11:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-3 11:39 | 显示全部楼层

image.png


有时当 brr = Range("d2:bzt92") 的范围增大时,比如Range("d2:bzt91") bzt91没问题,bzt92和大于91的情况就会提示,“类型不匹配",

还有,brr = Range("d2:bzt105")时,大部分时间会提示“类型不匹配",如果从小往大的改成105,偶尔也不报错.

这些只是我暂时碰到的情况。
麻烦看一下什么问题。谢谢!

TA的精华主题

TA的得分主题

发表于 2024-1-4 16:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 计算数据()
Range("b2:bzt105").Replace What:=",", Replacement:=","
arr = Range("b2:b105")
brr = Range("d2:bzt105")
m = UBound(arr)
n = UBound(brr, 2)
ReDim brr2(1 To m, 1 To n)

    For i = 1 To m
   
       a = Split(arr(i, 1), ",")
         For j = 1 To n
                  If i = 1 Then
                     brr2(i, j) = 0
                   Else
                     brr2(i, j) = brr2(i - 1, j)
                   End If
             For k = 0 To UBound(a)
         
                 If InStr(brr(i, j), a(k)) Then
                    If i = 1 Then
                       brr2(i, j) = 1
                    Else
                       brr2(i, j) = brr2(i - 1, j) + 1
                    End If
                 End If
            Next
        Next
    Next
   
  
[d107].Resize(m, n) = brr2
End Sub

试一试。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-4 22:18 | 显示全部楼层
清风竹- 发表于 2024-1-4 16:13
Sub 计算数据()
Range("b2:bzt105").Replace What:=",", Replacement:=","
arr = Range("b2:b105")

谢谢!找到问题了,第92行有单元格值为#REF!,所以一直提示数据类型不匹配。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 13:41 , Processed in 0.044807 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表