ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取及拆分后保持数据原格式不变

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-14 20:21 | 显示全部楼层 |阅读模式
求助:文件中的电话格式是从别处用VBA提取出来的,但是只要一激活就变成负数了。我想把总表以电话为条件进行拆分,但拆分后的分表中的电话格式也变成负数了,(见附件)我想把所有表中的电话格式保持带小括号的原格式不变,激活后也不变。该如何操作,尤其在vba代码中如修改代码来实现。烦请老师帮忙看看,谢谢

按条件列拆分数据到分表格式不变.zip

22.6 KB, 下载次数: 12

格式不变

TA的精华主题

TA的得分主题

发表于 2024-5-14 20:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
格式设置的问题。

按条件列拆分数据到分表格式不变.7z

23.61 KB, 下载次数: 12

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-14 20:30 | 显示全部楼层
参与一下。。。

  1. Sub ykcbf()  '//2024.5.14
  2.     Dim arr, brr, d
  3.     Set d = CreateObject("scripting.dictionary")
  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False
  6.     Dim tm: tm = Timer
  7.     Set ws = ThisWorkbook
  8.     Set sh = ws.Sheets("Sheet1")
  9.     bt = 1: col = 3
  10.     For Each sht In Sheets
  11.         If sht.Name <> sh.Name Then sht.Delete
  12.     Next
  13.     arr = sh.UsedRange
  14.     For i = bt + 1 To UBound(arr)
  15.         s = arr(i, col)
  16.         If Not d.Exists(s) Then
  17.             Set d(s) = CreateObject("scripting.dictionary")
  18.         End If
  19.         d(s)(i) = Application.Index(arr, i)
  20.     Next i
  21.     For Each k In d.keys
  22.         sh.Copy after:=Sheets(Sheets.Count)
  23.         Set sht = Sheets(Sheets.Count)
  24.         m = d(k).Count
  25.         With sht
  26.             .Name = k
  27.             .UsedRange.Offset(m + bt).Clear
  28.             .DrawingObjects.Delete
  29.             .Cells(bt + 1, 1).Resize(m, UBound(arr, 2)) = Application.Rept(d(k).Items, 1)
  30.             Columns(3).NumberFormatLocal = "0_);[红色](0)"
  31.         End With
  32.     Next k
  33.     sh.Activate
  34.     Set d = Nothing
  35.     Application.DisplayAlerts = True
  36.     Application.ScreenUpdating = True
  37.     MsgBox "共用时:" & Format(Timer - tm) & "秒!"
  38. End Sub


复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-14 20:41 | 显示全部楼层
试了试,设置位文本格式就好了

    Columns("C:C").NumberFormatLocal = "@"

TA的精华主题

TA的得分主题

发表于 2024-5-14 21:02 | 显示全部楼层
不关格式的事! 去掉 如图 剪头处后面原有的  .Value !!!!!!!!!
tempsnip.png

TA的精华主题

TA的得分主题

发表于 2024-5-14 21:24 | 显示全部楼层
cnmlgb9998 发表于 2024-5-14 21:02
不关格式的事! 去掉 如图 剪头处后面原有的  .Value !!!!!!!!!

仅删除.value并不够,拆分后的表除第一个表,其它表都是还带有负号。
不信的话,你上传附件看看。

TA的精华主题

TA的得分主题

发表于 2024-5-14 21:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2024-5-14 21:24
仅删除.value并不够,拆分后的表除第一个表,其它表都是还带有负号。
不信的话,你上传附件看看。

的确。。。。。。加个循环遍历。所有元素前面加个 '   即可解决。不想搞了

TA的精华主题

TA的得分主题

发表于 2024-5-14 21:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cnmlgb9998 发表于 2024-5-14 21:25
的确。。。。。。加个循环遍历。所有元素前面加个 '   即可解决。不想搞了

数组写入表格前,对于需要文本处理的如身份证号这样的,就要先对该列进行格式设置。这个电话号码,其实也是带有一种数字格式的,需要先设置一下。

TA的精华主题

TA的得分主题

发表于 2024-5-14 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 工作表拆分() '通过筛选方法完成需求,速度快,但当有合并单元格时就不能用。读者可以根据实际情况选用
  2.     Application.ScreenUpdating = False  '关闭屏幕更新,加快执行速度
  3.     Dim sh As Worksheet, r&, i&
  4.     Set sh = Sheets("sheet1")
  5.     With sh
  6.         r = .Cells(Rows.Count, 3).End(xlUp).Row
  7.         Worksheets.Add , sh, r - 1
  8.         For i = 2 To r
  9.             Union(.[a1], .Cells(i, 1)).EntireRow.Copy Sheets(i).[a1]
  10.             .UsedRange.EntireColumn.Copy
  11.             With Sheets(i)
  12.                 .Select
  13.                 .[a1].PasteSpecial 8, xlNone
  14.                 .[c2] = "'" & .[c2].Text
  15.                 .Name = Replace(Replace(sh.Cells(i, 3).Text, "(", ""), ")", "")
  16.             End With
  17.         Next
  18.     End With
  19.     Application.ScreenUpdating = True  '恢复屏幕更新
  20.     MsgBox "拆分完毕!", 64, "友情提示"
  21. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-15 08:49 | 显示全部楼层

尊敬的剑指E老师:如果是多条件拆分,如何编写VBA语句?假如楼主的附件里B列有“胡声红“””两个或者更多,俺想以B列为拆分条件,将“胡声红”及“胡梦银”两个人的拆成一个表,其他人拆成一个表,咋整?恳请赐教。谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-29 08:32 , Processed in 0.046013 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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