ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助一条EXCEL代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-18 12:33 | 显示全部楼层 |阅读模式
有三列数据C,H,K,里面的数字是由0-9的个位数组成的。我想把里面的数字替换一下,替换的规则是:                                                                                       
0替换成10 20 30       
1替换成01 11 21 31                               
2替换成02 12 22 32                               
3替换成03 13 23 33                               
4替换成04 14 24                       
5替换成05 15 25                       
6替换成06 16 26                       
7替换成07 17 27                       
8替换成08 18 28                       
9替换成09 19 29                                                                       
顺序从小到大,中间用 空格 隔开,想要的结果就在箭头右方

问这个代码应该怎么写啊?               
                                               

求助.rar

23.88 KB, 下载次数: 26

TA的精华主题

TA的得分主题

发表于 2024-6-18 14:55 | 显示全部楼层
替换的例子:
2024-6-18替换.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:42 | 显示全部楼层
01368的结果怎么可能是03 06 08 13 16 18 23 26 28 33,从数量上看也不对啊

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:44 | 显示全部楼层
执行效果,有一个和给出的样例 结果不一样
录制_2024_06_18_16_44_46_729.gif

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提前做了一个映射关系表,代码就简单些了
image.png

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:46 | 显示全部楼层
JS代码,供参考
  1. function 转换(){
  2.         let obj=Sheets.Item("映射关系").Range("a1").CurrentRegion.Value2.reduce((obj,[a,b])=>(obj[a]=b.trim().split(" "),obj),{});
  3.         let res=Range("c2:c6").Value2.reduce((res,[x])=>{
  4.                 return res.push([[...x].reduce((rs,y)=>(rs.push(...obj[y]), rs),[]).sort((a,b)=>a.localeCompare(b)).join(" ")]), res;
  5.         },[]);
  6.         Range("p2").Resize(res.length,res[0].length).Value2=res;
  7. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件,WPS打开测试

求助.zip

23.97 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-18 20:15 | 显示全部楼层
Option Explicit
Sub TEST2()
    Dim ar, br, cr, dr, i&, j&, k&, strJoin$
   
    Application.ScreenUpdating = False
   
    br = Array("10 20 30", "01 11 21 31", "02 12 22 32", "03 13 23 33", _
        "04 14 24", "05 15 25", "06 16 26", "07 17 27", "08 18 28", "09 19 29")
        
    ar = Range("C1", Intersect(ActiveSheet.UsedRange, Columns("C:K"))).Value
    For i = 1 To UBound(ar)
        For j = 1 To UBound(ar, 2)
            If Len(ar(i, j)) Then
                strJoin = ""
                For k = 1 To Len(ar(i, j))
                    strJoin = strJoin & " " & br(Mid(ar(i, j), k, 1))
                Next k
                cr = Split(strJoin)
                ReDim dr(1 To UBound(cr), 1 To 2)
                For k = 1 To UBound(cr)
                    dr(k, 1) = cr(k): dr(k, 2) = Val(cr(k))
                Next k
                bSort dr, 1, UBound(dr), 1, 2, 2
                ar(i, j) = Join(Application.Transpose(Application.Index(dr, , 1)))
            End If
        Next j
    Next i
   
    Columns("P:XFD").Clear
    With [P1].Resize(UBound(ar), UBound(ar, 2))
        .Value = ar
        .EntireColumn.AutoFit
    End With
    Application.ScreenUpdating = True
    Beep
End Sub

Function bSort(ar, iFirst&, iLast&, iLeft&, iRight&, _
    iKey&, Optional isOrder As Boolean = True)
    Dim i&, j&, k&, vTemp
   
    For i = iFirst To iLast - 1
        For j = iFirst To iLast + iFirst - 1 - i
            If ar(j, iKey) <> ar(j + 1, iKey) Then
                If ar(j, iKey) < ar(j + 1, iKey) Xor isOrder Then
                    For k = iLeft To iRight
                        vTemp = ar(j, k)
                        ar(j, k) = ar(j + 1, k)
                        ar(j + 1, k) = vTemp
                    Next
                End If
            End If
        Next j
    Next i
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-18 20:16 | 显示全部楼层
楼主是否模拟结果有误

求助.rar

22.08 KB, 下载次数: 8

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-18 22:14 | 显示全部楼层

感谢老师,就是我的意思,就是在原位置上面替换出来。。后面箭头的 是显示的结果,并不是要显示的位置。就是想在原位置上 替换出来结果。 这个能不能改一下啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 18:26 , Processed in 0.041096 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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