ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA多条件计算 得出需要的序号结果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-11 05:06 | 显示全部楼层 |阅读模式
本帖最后由 zhang139 于 2024-4-11 07:37 编辑

请论坛的高手大能 帮忙看下~
VBA多条件计算 得出需要的序号结果
类型一样,备注没有 标识重要,为一个序号
有 备注重要 为一个,有备注重要的序号不能重复


VBA计算序号.jpg

VBA计算序号.7z

9.73 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2024-4-11 07:27 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 07:32 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
沈默00 发表于 2024-4-11 07:27
你不解释一下,序号怎么个算法吗?

标识重要 不能重复递增序号

TA的精华主题

TA的得分主题

发表于 2024-4-11 07:33 | 显示全部楼层
解释一下,序号怎么个算法。你所谓的多条件在哪儿呢?
你啥都不说,别人就啥都不干,只好如此。

TA的精华主题

TA的得分主题

发表于 2024-4-11 07:40 | 显示全部楼层
zhang139 发表于 2024-4-11 07:32
标识重要 不能重复递增序号

还是看不懂,标重要的也不是连号,其他数字的递增也找不到规律,
问题应该不复杂,,让其他老师先看看吧,

TA的精华主题

TA的得分主题

发表于 2024-4-11 07:52 | 显示全部楼层
本帖最后由 shiruiqiang 于 2024-4-11 07:55 编辑

大概这样,标识“出”的为1,然后第一个出现“出”及第一个“重要”的2,出现“出”及第二个“重要”的+1=3,以此类推;
标识“进”的为上面最大的数字+1,第一个出现“进”及第一个“重要”的前面的数字+1,多一个“重要”就+1
image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 07:56 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shiruiqiang 发表于 2024-4-11 07:52
大概这样,标识“出”的为1,然后第一个出现“出”及第一个“重要”的2,出现“出”及第二个“重要”的+1=3 ...

嗯嗯嗯嗯嗯嗯嗯

TA的精华主题

TA的得分主题

发表于 2024-4-11 08:04 | 显示全部楼层

你已经是10多年的老会员了,不知道求助需要先说明吗?一次性说清楚比啥都强。你现在这样让人去猜,没有耐心的人早就走了。

TA的精华主题

TA的得分主题

发表于 2024-4-11 08:32 | 显示全部楼层
  1. Option Explicit

  2. Sub 按钮2_Click()

  3. Dim d As Object
  4. Dim last&, i&, str1$, str2$, id&
  5. Set d = CreateObject("Scripting.dictionary")

  6.   last = Range("a65536").End(xlUp).Row
  7.   id = 1
  8.   For i = 2 To last
  9.      str1 = Cells(i, 1).Value
  10.       str2 = Cells(i, 2).Value
  11.       If Len(str2) = 0 Then
  12.         If d.Exists(str1) Then
  13.         
  14.            Cells(i, 4) = d(str1)
  15.            
  16.         Else
  17.            Cells(i, 4) = id
  18.            d(str1) = id
  19.            id = id + 1
  20.         End If
  21.       
  22.       ElseIf str2 = "重要" Then
  23.          Cells(i, 4) = id
  24.          
  25.            id = id + 1
  26.       
  27.       End If
  28.   
  29.   Next
  30.   Set d = Nothing
  31. End Sub
  32. VBA计算序号.rar (17.42 KB, 下载次数: 4)
复制代码

TA的精华主题

TA的得分主题

发表于 2024-4-11 08:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test0()
  2.   Dim ar, dict As Object
  3.   Dim i As Long, num As Long
  4.   Set dict = CreateObject("Scripting.Dictionary")
  5.   ar = Range("A1").CurrentRegion.Resize(, 4).Value
  6.   For i = 2 To UBound(ar)
  7.     ar(i, 4) = ""
  8.     If ar(i, 1) <> ar(i - 1, 1) Or ar(i, 2) = "重要" Then
  9.       num = num + 1
  10.       ar(i, 4) = num
  11.       If Not dict.Exists(ar(i, 1)) Then dict.Add ar(i, 1), num
  12.     Else
  13.       ar(i, 4) = dict(ar(i, 1))
  14.     End If
  15.   Next
  16.   Range("A1").Resize(UBound(ar), UBound(ar, 2)) = ar
  17.   Set dict = Nothing
  18.   Beep
  19. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 18:36 , Processed in 0.039321 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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