ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 逗号 替换 空格的 疑惑,请教各位老师

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-6 22:06 | 显示全部楼层 |阅读模式
本帖最后由 1234vba 于 2018-9-6 22:35 编辑


附件下载 Book1.rar (12.35 KB, 下载次数: 8)


代码如下:

  1. Sub main()

  2.     Dim js As Object, s$, json$

  3.     s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1"":null,""code2"":null,""time"":1536046966000}]"

  4.     Set js = CreateObject("MSScriptControl.ScriptControl")

  5.     js.Language = "JavaScript": js.AddObject "g", Range("a27")

  6.     json = "a=" & s & ";for(i=0;i<a.length;i++){g(i+1,1)=a[i].issue;b=a[i].code.split(',');for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"

  7.    js.eval (json)

  8. End Sub
复制代码
代码效果:
QQ截图20180906215400.png


修改如下:(红色部分)
json = "a=" & s & ";for(i=0;i<a.length;i++){g(i+1,1)=a.issue;b=a.code.split();for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"

QQ截图20180906215601.png

我本想使用Replace 来替换掉 逗号的。(空格替换掉逗号)
但不管怎么修改都不对。

所以尝试 直接处理 定义的变量s
ss = Replace(s, ",", " ")
    Dim js As Object, s$, json$

    s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1"":null,""code2"":null,""time"":1536046966000}]"
   
    ss = Replace(s, ",", " ")
   
    Debug.Print ss
结果如下:
[{"ttery":"b10" "issue":"1702084" "code":"01 05 02 07 10 09 06 08 04 03" "code1":null "code2":null "time":1536046966000}]
这里已经显示替换成功,
但接下来的代码 报错了。。

  1. Private Sub CommandButton1_Click()
  2. Dim js As Object, s$, json$

  3.     s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1"":null,""code2"":null,""time"":1536046966000}]"
  4. ss = Replace(s, ",", " ")
  5.    
  6.     Debug.Print ss

  7.     Set js = CreateObject("MSScriptControl.ScriptControl")

  8.     js.Language = "JavaScript": js.AddObject "g", Range("a27")

  9.     json = "a=" & ss & ";for(i=0;i<a.length;i++){g(i+1,1)=a[i].issue;b=a[i].code.split();for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"

  10.    js.eval (json)


  11. End Sub
复制代码


报错停在这句
js.eval (json)
来源应该是这句 b=a.code.split();


要如何修改 才能把 逗号 替换成空格 输出呢


请各位老师帮忙




TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 07:05 来自手机 | 显示全部楼层
早上各位老师

TA的精华主题

TA的得分主题

发表于 2018-9-7 07:48 | 显示全部楼层
这个直接用split函数就解决的事情,为什么非要用Json方式处理?

TA的精华主题

TA的得分主题

发表于 2018-9-7 08:02 | 显示全部楼层
  1. Sub t()
  2. arr = Split([b27], ",")
  3. [b28] = Join(arr, "  ")
  4. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 08:34 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
microyip 发表于 2018-9-7 07:48
这个直接用split函数就解决的事情,为什么非要用Json方式处理?

老师好,这个怎么写呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 08:36 来自手机 | 显示全部楼层
719404338 发表于 2018-9-7 08:02

老师好。
A列-K列 不单单一行数据哦

TA的精华主题

TA的得分主题

发表于 2018-9-7 08:51 | 显示全部楼层
1.png
s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1"":null,""code2"":null,""time"":1536046966000}]"
  ss = Replace(s, ",", " ")
替换后是

   ss =”[{"ttery":"b10" "issue":"1702084" "code":"01 05 02 07 10 09 06 08 04 03" "code1":null "code2":null "time":1536046966000}]"
js不认识这个ss ,这个顶多是个字符串,就谈不上有有code,code1==属性。

TA的精华主题

TA的得分主题

发表于 2018-9-7 08:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub a()
    Dim vData As Variant, nI As Integer, vFill As Variant
    vData = Split([B27], " ")
    ReDim vFill(UBound(vData))
    For nI = 0 To UBound(vData)
        vFill(nI) = Val(vData(nI))
    Next
    [B27].Resize(, UBound(vFill) + 1) = vFill
End Sub

TA的精华主题

TA的得分主题

发表于 2018-9-7 09:02 | 显示全部楼层
1234vba 发表于 2018-9-7 08:36
老师好。
A列-K列 不单单一行数据哦

你是要填回到B27吗?


  1. Sub t()
  2. arr = Split([b27], ",")
  3. [b27] = Join(arr, "  ")
  4. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 09:50 来自手机 | 显示全部楼层
Kaohsing 发表于 2018-9-7 08:51
s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1 ...


老师好。那我要如何操作,,不能先替换成空格,不然 code属性丢失。
定义列表吗?
。但我尝试修改之前的,号split代码,修改不来
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 15:41 , Processed in 0.026490 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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