ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 排序问题,内容是文本+字母 ,按照字母的指定顺序排序

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-15 10:00 | 显示全部楼层
本帖最后由 976190982 于 2020-7-15 10:05 编辑
一把小刀闯天下 发表于 2020-7-14 15:19
'给你加了一个条件,就是13楼的,,,

Option Explicit

老师  能否向您请教一个问题,   在这段代码中   是怎么确定规格  这一排序依据的    因 有时候数据放的位置并不一样  所以我有时候想改

TA的精华主题

TA的得分主题

发表于 2020-7-15 11:56 | 显示全部楼层
976190982 发表于 2020-7-15 10:00
老师  能否向您请教一个问题,   在这段代码中   是怎么确定规格  这一排序依据的    因 有时候数据放的 ...

需要规则,我只是给你加了一个条件而已,是否正确需要你去确认。代码按13楼的思路敲的,,,

------------

修改15代码看一下输出就能看到规则的(用了3个辅助列)

[a2].Resize(UBound(arr, 1) - 1, 3) = arr  改成:

[a2].Resize(UBound(arr, 1) - 1, 6) = arr

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-15 13:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一把小刀闯天下 发表于 2020-7-15 11:56
需要规则,我只是给你加了一个条件而已,是否正确需要你去确认。代码按13楼的思路敲的,,,

-------- ...

谢谢  老师   您的思路是对的  是我想要的   谢谢您的指点

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-17 16:50 | 显示全部楼层
一把小刀闯天下 发表于 2020-7-14 15:19
'给你加了一个条件,就是13楼的,,,

Option Explicit

老师  我使用了很久    今天才发现  规格后面的数量没有跟着变,老师是否能帮我改一下,望您回复,想来也只有您比较对我这个问题有了解,希望得到您的帮助。
都怪我没有考虑到后续的使用情况,希望老师能给予帮助,谢谢
排序问题.zip (38.85 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2020-7-17 20:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
976190982 发表于 2020-7-17 16:50
老师  我使用了很久    今天才发现  规格后面的数量没有跟着变,老师是否能帮我改一下,望您回复,想来也 ...

‘当时没有D、E这2列,稍作修改,先测试一下,,,

Option Explicit

Sub test()
  Dim arr, i, j, p, dic
  Set dic = CreateObject("scripting.dictionary")
  arr = Split("XS,S,M,L,XL,2XL,3XL,4XL", ",")
  For i = 0 To UBound(arr)
    dic(arr(i)) = i - 20
  Next
  arr = [a1].CurrentRegion.Offset(1).Resize(, 8).Value
  For i = 1 To UBound(arr, 1) - 1
    For j = Len(arr(i, 3)) To 1 Step -1
      If Asc(Mid(arr(i, 3), j, 1)) < 0 Then
        arr(i, 6) = left(arr(i, 3), j)
        arr(i, 7) = Mid(arr(i, 3), j + 1)
        If dic.exists(arr(i, 7)) Then
          arr(i, 8) = dic(arr(i, 7))
        Else
          If IsNumeric(arr(i, 7)) Then
            arr(i, 8) = Val(arr(i, 7))
          Else
            arr(i, 8) = arr(i, 7)
          End If
        End If
        Exit For
      End If
    Next
  Next
  For i = 1 To UBound(arr, 1) - 1
    If arr(i, 1) <> arr(i + 1, 1) Then
      For j = p + 1 To i
        If arr(j, 6) <> arr(j + 1, 6) Or j = i Then
          Call bsort(arr, p + 1, j, 1, UBound(arr, 2), 8)
          p = j
        End If
      Next
      p = i
    End If
  Next
  [a2].Resize(UBound(arr, 1) - 1, 5) = arr
End Sub

Function bsort(arr, 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 arr(j, key) > arr(j + 1, key) Then
        For k = left To right
          t = arr(j, k): arr(j, k) = arr(j + 1, k): arr(j + 1, k) = t
        Next
      End If
    Next
  Next
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-17 20:15 | 显示全部楼层
一把小刀闯天下 发表于 2020-7-17 20:04
‘当时没有D、E这2列,稍作修改,先测试一下,,,

Option Explicit

谢谢老师    给你添加麻烦了    我测试一下   万分感谢您的回复   谢谢您

TA的精华主题

TA的得分主题

发表于 2020-7-17 20:57 | 显示全部楼层
zpy2 发表于 2020-7-13 19:46
select 货号,规格,条码 from (Select *,regexp2('^[^A-Z]+',规格) a,regexp2('[A-Z]+',规格) b from 货号 ...

不会玩
QQ截图20200717205638.png

TA的精华主题

TA的得分主题

发表于 2020-7-17 21:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 大镁铝 于 2020-7-17 21:41 编辑
zpy2 发表于 2020-7-13 19:46
select 货号,规格,条码 from (Select *,regexp2('^[^A-Z]+',规格) a,regexp2('[A-Z]+',规格) b from 货号 ...

大神快来         看我的图片,咋不行呀,晕倒,大神的手机多少银子买的啊,不肯玩电脑

TA的精华主题

TA的得分主题

发表于 2020-7-18 07:22 来自手机 | 显示全部楼层
大镁铝 发表于 2020-7-17 21:39
大神快来         看我的图片,咋不行呀,晕倒,大神的手机多少银子买的啊,不肯玩电脑

大神,电脑太贵,我买不起啊。。。
这个 regexp2是我在php 封装的一个自定义函数,只能在线或者网抓使用,ado 是不支持的。。。

TA的精华主题

TA的得分主题

发表于 2020-7-18 07:30 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 大镁铝 于 2020-7-18 07:36 编辑
zpy2 发表于 2020-7-18 07:22
大神,电脑太贵,我买不起啊。。。
这个 regexp2是我在php 封装的一个自定义函数,只能在线或者网抓使用 ...


大神说笑了,现在电脑比手机便宜,我本来想买个p40pro,太贵了,比我买的电脑还贵200,听说像素不好给又退了,网抓我不会,越来越觉得啥都不会,又懒

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 08:08 , Processed in 0.035086 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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