有个vba编程的问题,求帮忙解答

Emsizz-avatar

Emsizz

2022-08-06T00:57:30+00:00

有一列日期的格式是dd/mm/yyyy,我现在要把他改为yyyy/mm/dd,请问有什么办法吗?
我自己编写了个,采用的是把日期数据当成字符串,然后mid分别取10个字符,再重新组合。这样可以达成效果,但是数据特别多、运算量特别大,电脑都跑死机了
_timothy.kenny_-avatar

_timothy.kenny_

试试直接选中那一列,单元格格式,自定义格式?
GreatColt77-avatar

GreatColt77

A,存成csv然后写个几行的Python
B,原文件存成csv,用记事本打开,全选复制,打开一个空的Excel,使用文本导入向导,然后在日期那列选上正确的日期格式。或者只对日期那列做如上操作
ari H.-avatar

ari H.

编程语言不是一般都自带时间字符串格式化函数吗?
Elllz-avatar

Elllz

io 瓶颈吧,这么简单的查找替换,按道理cpu 风扇都不带转一下的,试试数据分批处理呢
Hillin-avatar

Hillin

搭车问下,mid按字符取数可以换成按字节位置取数么[s:ac:愁]
Mochï-avatar

Mochï

有专门的时间格式吧?
赋值在读取不行吗?
Luryoryyy-avatar

Luryoryyy

Columns("a:a").NumberFormatLocal = "yyyy/mm/dd"
Shiroe93-avatar

Shiroe93

VBA.Format(Cells(X,Y), "yyyy/mm/dd")
IamNSFW-avatar

IamNSFW

[quote][pid=631685954,33035854,1]Reply[/pid] Post by [uid=737652]洛萨_德财兼备[/uid] (2022-08-12 09:04):

搭车问下,mid按字符取数可以换成按字节位置取数么[s:ac:愁][/quote]是相当于先查找到字符位置后再根据这个位置取吗?可以,不过你要是数据源不太好整的话建议你用正则
Emsizz-avatar

Emsizz

[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循环?
Shiroe93-avatar

Shiroe93

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"
Hillin-avatar

Hillin

[quote][pid=631709353,33035854,1]Reply[/pid] Post by [uid=24607195]MrZeruel[/uid] (2022-08-12 10:27):

是相当于先查找到字符位置后再根据这个位置取吗?可以,不过你要是数据源不太好整的话建议你用正则[/quote]嗯,比如现在中文mid一位就算一个中文字俩字节,“啊12345”,这样我截取第三位会截到2,但是我想截第三个字节1
Emsizz-avatar

Emsizz

[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]我试过了,这样改了以后原数据没变化。。。
Bigbee6-avatar

Bigbee6

只改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]
Shiroe93-avatar

Shiroe93

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"一句就可以了
SABANUSI(鯖主)-avatar

SABANUSI(鯖主)

好像有个,application.text(),就是用TEXT()转换
Shiroe93-avatar

Shiroe93

我想我明白你的意思了
直接MID(TEXT(XX,"yyyymmdd"),X,X)不就好了么
ふぃね🍭-avatar

ふぃね🍭

发表格出来,给你搞定