Emsizz
2022-08-06T00:57:30+00:00
有一列日期的格式是dd/mm/yyyy,我现在要把他改为yyyy/mm/dd,请问有什么办法吗?
我自己编写了个,采用的是把日期数据当成字符串,然后mid分别取10个字符,再重新组合。这样可以达成效果,但是数据特别多、运算量特别大,电脑都跑死机了
A,存成csv然后写个几行的Python
B,原文件存成csv,用记事本打开,全选复制,打开一个空的Excel,使用文本导入向导,然后在日期那列选上正确的日期格式。或者只对日期那列做如上操作
io 瓶颈吧,这么简单的查找替换,按道理cpu 风扇都不带转一下的,试试数据分批处理呢
搭车问下,mid按字符取数可以换成按字节位置取数么[s:ac:愁]
Columns("a:a").NumberFormatLocal = "yyyy/mm/dd"
VBA.Format(Cells(X,Y), "yyyy/mm/dd")
[quote][pid=631685954,33035854,1]Reply[/pid] Post by [uid=737652]洛萨_德财兼备[/uid] (2022-08-12 09:04):
搭车问下,mid按字符取数可以换成按字节位置取数么[s:ac:愁][/quote]是相当于先查找到字符位置后再根据这个位置取吗?可以,不过你要是数据源不太好整的话建议你用正则
[quote][pid=631691051,33035854,1]Reply[/pid] Post by [uid=63549190]dekingpro1987[/uid] (2022-08-12 09:23):
VBA.Format(Cells(X,Y), "yyyy/mm/dd")[/quote]这个可以用,但是如果对一列的数据紧张修改呢?能不能不用for循环?
Reply to [pid=631716425,33035854,1]Reply[/pid] Post by [uid=60461967]萝卜_骑士[/uid] (2022-08-12 10:51)
你录制一个宏试试看呐
Columns("A:A").Select
Selection.NumberFormatLocal = "yyyy/mm/dd"
[quote][pid=631709353,33035854,1]Reply[/pid] Post by [uid=24607195]MrZeruel[/uid] (2022-08-12 10:27):
是相当于先查找到字符位置后再根据这个位置取吗?可以,不过你要是数据源不太好整的话建议你用正则[/quote]嗯,比如现在中文mid一位就算一个中文字俩字节,“啊12345”,这样我截取第三位会截到2,但是我想截第三个字节1
[quote][pid=631718964,33035854,1]Reply[/pid] Post by [uid=63549190]dekingpro1987[/uid] (2022-08-12 10:59):
你录制一个宏试试看呐
Columns("A:A").Select
Selection.NumberFormatLocal = "yyyy/mm/dd"[/quote]我试过了,这样改了以后原数据没变化。。。
只改A列的格式用一句代码就行了:
Range("A1:A65536").NumberFormatLocal = "yyyy/mm/dd"
如果是想改一列的数据,
(比如A列数据固定 是 dd/mm/yyyy,必须是数字形式或者文本形式(非更改后的日期格式)
用以下代码后会输出成B列形式(日期格式可再用上面的格式更改成yyyy/mm/dd)
[img]https://img.nga.178.com/attachments/mon_202208/12/-vabhQ2q-59aiZbT3cSw9-jj.jpg[/img]
Reply to [pid=631719631,33035854,1]Reply[/pid] Post by [uid=60461967]萝卜_骑士[/uid] (2022-08-12 11:01)
数据没有变化可能是你SHEETX没有选对
常规Columns("X:X").NumberFormatLocal = "yyyy/mm/dd"一句就可以了
好像有个,application.text(),就是用TEXT()转换
我想我明白你的意思了
直接MID(TEXT(XX,"yyyymmdd"),X,X)不就好了么