ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助各位大佬,有关数字转日期的疑问

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-26 23:19 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 anson 于 2024-7-27 06:46 编辑

想要实现单元格上输入4位数字后就能自动转为只有月和日的日期,附件上为什么在第四行就会出现不一样的呢,求助各位大佬的帮助!

test.rar

11.46 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2024-7-27 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
增加3位数的月日即一位数的月份的数据处理
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Row >= 1 And Target.Column = 1 And Target.Count = 1 Then
  3.   If Target <> "" Then
  4.    If Len(Target.Value) = 3 Then
  5.     Target.Value = Left(Target.Value, 1) & "-" & Right(Target.Value, 2)
  6.    ElseIf Len(Target.Value) = 4 Then
  7.     Target.Value = Left(Target.Value, 2) & "-" & Right(Target.Value, 2)
  8.    End If
  9.   End If
  10. End If
  11. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-27 19:01 | 显示全部楼层
ynzsvt 发表于 2024-7-27 10:38
增加3位数的月日即一位数的月份的数据处理

首先谢谢您的解答,这个我是知道的。只是现在要解决的问题是在第4行单元格上输入1125后就出现了1903/1/29,我想要的是11月25日的结果

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tmPstr$
Application.EnableEvents = False
    If Target.Row >= 1 And Target.Column = 1 And Target.Count = 1 Then
        If Target <> "" Then
            tmPstr = Year(Date) & Format(Target, "-00-00")
            Target = DateValue(tmPstr)
            Target.NumberFormatLocal = "mm月dd日"
        End If
    End If
Application.EnableEvents = True
End Sub

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1、单元格设置成"文本"
2、"-" 换成“/”。
image.jpg

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
给你建议,最好的方法,就是规范录入日期。

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:41 | 显示全部楼层
anson 发表于 2024-7-27 19:01
首先谢谢您的解答,这个我是知道的。只是现在要解决的问题是在第4行单元格上输入1125后就出现了1903/1/29 ...

输入前设置格式,去掉日期格式即可。

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:47 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Row >= 1 And Target.Column = 1 And Target.Count = 1 Then
  3.   If Target <> "" Then
  4.    If Len(Target.Value2) = 3 Then
  5.     Target.Value2 = Left(Target.Value2, 1) & "-" & Right(Target.Value2, 2)
  6.    ElseIf Len(Target.Value2) = 4 Then
  7.     Target.Value2 = Left(Target.Value2, 2) & "-" & Right(Target.Value2, 2)
  8.    End If
  9.   End If
  10. End If
  11. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
anson 发表于 2024-7-27 19:01
首先谢谢您的解答,这个我是知道的。只是现在要解决的问题是在第4行单元格上输入1125后就出现了1903/1/29 ...

1125要转为11月15日,这个首先得对1125转为字符值,然后,每2位进行拆分,最后再合并成11月25日的样子。
比如:[a4]=1125,转换过程如下:st=cstr([a4].value)
                                                a1=mid(st,1,2)
                                                a2=mid(st,3,2)
                                                rq=a1 & "月“ & a2 & "日"

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-27 20:29 | 显示全部楼层
明天会更好zj 发表于 2024-7-27 19:39
给你建议,最好的方法,就是规范录入日期。

谢谢建议,数量多,录入日期比较繁琐,希望能用四位数可以解决
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-8 07:46 , Processed in 0.044271 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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