ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南

[求助] 求助大神,求助老师,我的需求是统计!!!谢谢

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-28 11:02 | 显示全部楼层

你好,我按照你的代码输入表格,发现不可以,不知哪里出问题了

统计.zip

95.9 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-2-28 15:23 | 显示全部楼层
珍惜的人7758258 发表于 2024-2-28 11:02
你好,我按照你的代码输入表格,发现不可以,不知哪里出问题了

image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-28 17:26 | 显示全部楼层

功能二:①已知在表格1中,在单元格A7设置Sheet1,单元格A8设置列范围,,,,,当单元格D2和E2是A122和10。是在表格Sheet1中,单元格A122到A113,统计单元格内,数值和文字出现的次数,并且从多到少,排!当单元格H2和I2是A121和10,是在表格Sheet1中,单元格A121到A112,统计单元格内,数值和文字出现的次数,并且从多到少,排!结果是放在表格1中,请看表格,以此类推。

②在表格1中,在单元格A7设置Sheet1,单元格A8设置范围行。。。单元格D2和E2是A122和1,那就是在表格Sheet1中,单元格A122,这一行,统计单元格内,数值和文字出现的次数,并且从多到少,排!结果是放在表格1中,请看表格,以此类推。





老师你好,请完善两个问题。

第一个问题是从多到少,排。请看图。

第二个问题,这个没有完善,不出结果。(②在表格1中,在单元格A7设置Sheet1,单元格A8设置范围行。。。单元格D2和E2是A122和1,那就是在表格Sheet1中,单元格A122,这一行,统计单元格内,数值和文字出现的次数,并且从多到少,排!结果是放在表格1中,请看表格,以此类推。)

从多到少排序.jpg
这一行.jpg

vba.zip

96.19 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 22:19 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2024-3-1 15:14 | 显示全部楼层
从多到少排。范围行那个还是不明白,或许你可以根据列范围的代码自己修改适用。
  1. Sub test()
  2. Set d = CreateObject("Scripting.dictionary")
  3. [b3:ru12].Clear
  4. arr = Sheets(1).UsedRange
  5. m1 = Val(Mid([d2], 2))
  6. m2 = [e2]
  7. For i = 4 To Cells(1, Columns.Count).End(1).Column + 2 Step 4
  8.    Cells(2, i) = "A" & m1 '功能一
  9.    Cells(2, i + 1) = m2
  10.    For j = m1 - m2 + 1 To m1 '功能二-(1)
  11.      If m1 < m2 Then Exit For
  12.      d(arr(j, 1)) = d(arr(j, 1)) + 1
  13.      If d(arr(j, 1)) > m Then m = d(arr(j, 1))
  14.    Next
  15.    a = d.Keys
  16.     For j = 0 To UBound(a)
  17.         s = CStr(d(a(j)))
  18.         d(s) = d(s) & "," & a(j)
  19.    Next
  20.    m3 = Cells(2, i - 2)
  21.    r = 2
  22.    For j = m To 1 Step -1
  23.     If d.exists(CStr(j)) Then
  24.         a = Split(d(CStr(j)), ",")
  25.         For k = 1 To UBound(a)
  26.          r = r + 1
  27.           With Cells(r, i)
  28.             .Value = a(k)
  29.             .Offset(0, 1) = j & "个"
  30.             If Val(a(k)) = m3 Then          '功能三
  31.                 .Interior.ColorIndex = 6
  32.                 .Font.ColorIndex = 3
  33.              End If
  34.          End With
  35.          Next
  36.      End If
  37.   Next
  38.   d.RemoveAll
  39.   m1 = m1 - 1
  40. Next
  41. [b3:ru12].Borders.LineStyle = 1
  42. End Sub

复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-1 16:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助各位老师谢谢了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-1 21:39 | 显示全部楼层
本帖最后由 珍惜的人7758258 于 2024-3-2 07:57 编辑
半百 发表于 2024-3-1 15:14
从多到少排。范围行那个还是不明白,或许你可以根据列范围的代码自己修改适用。

老师您好,是我解释不到位,才让您不明白。

②在表格1中,在单元格A7设置Sheet1,单元格A8设置范围行。。。单元格D2和E2是A122和1,那就是在表格Sheet1中,单元格A122(从单元格A122到单元格S122),这一行,统计单元格内,数值和文字出现的次数,并且从多到少,排!结果是放在表格1中。


同理,单元格D2和E2是A122和2,那就是在表格Sheet1中,单元格A122和A121(从单元格A122和A121到单元格S122和S121),这两行。单元格D2和E2是A122和3,那就是在表格Sheet1中,单元格A122和A121和A120(单元格A122和A121和A120到单元格S122和S121和S120),这三行。以此类推。

另外,设置范围行。。。单元格D2和E2是B122和1,那就是在表格Sheet1中,单元格B122(从单元格B122到单元格S122),这一行。其他不变。




其实从从多到少,排加从小到大排,更好。
360截图20240302075653638.jpg

vba.zip

109.3 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-2 17:26 来自手机 | 显示全部楼层
半百 发表于 2024-3-1 15:14
从多到少排。范围行那个还是不明白,或许你可以根据列范围的代码自己修改适用。

求助老师搞定

TA的精华主题

TA的得分主题

发表于 2024-3-2 18:13 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 13:08 , Processed in 0.042142 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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