精华内容
下载资源
问答
  • 在日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,... 但我们进行不规范的日期输入时,如在单元格中输入:2017.10.10或2017。10。10或20171010时,EXCEL不会自动识别这些内容为日期,而只会识别为字...

          在日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,如:2017-10-17 或 2017/10/17时,EXCEL会自动识别为日期并按单元格设计格式显示,单元格中存储的值也是日期格式的值。 

          但我们进行不规范的日期输入时,如在单元格中输入:2017.10.10或2017。10。10或20171010时,EXCEL不会自动识别这些内容为日期,而只会识别为字符串(文本),且在单元格中存储的也只是文本而已。

          我们通过编写VBA代码可以轻松解决此问题,让EXCEL完美识别输入的任何日期内容,不管是20171010或2017.10.10还是201711或20170101或2017131都可被正确识别,而且是直接将单元格中存储的值转换为日期值,不仅仅是显示格式的转换。

     

          闲话不说,直接让VBA代码:

          (要录入VBA代码,必须通过EXCEL进入VBA编辑器,这部分内容可搜索下)

          

    '以下代码都要放到一个sheet的类模块之中
    Dim nDate
    Private Sub Worksheet_Activate()'加载sheet的事件
        nDate = InputBox("请确定此工作表中第几列为日期型的数据!", "输入数字", "2")
        If nDate = "" Then
            nDate = 2 '--只操作指定的列号的列,目前只操作B列(第2列)
        Else
            nDate = Val(nDate)
        End If
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)'--sheet中任何地方发生数据改变时触发的事件
        If nDate = 0 Then Exit Sub
        If Target.Cells.Column = nDate Then '--如果是第二列才检验文本为日期
            Target.Value = TryChangeDate2(Target.Value)
        End If
    End Sub
    Public Function TryChangeDate2(ByVal strDATEcome As String) As Variant
        On Error GoTo TryChangeDate2ERR
        Dim strDATE As String
        strDATE = Trim(strDATEcome)
        Dim myDate As Date
        Dim strK As String
        strK = mTrim(strDATEcome)
        Dim k As Integer, nkkkk As Integer
        k = -1
    k0:
        k = 0
        myDate = DateValue(strDATE)
        myDate = Format(myDate, "yyyy/m/d")
        TryChangeDate2 = myDate
        Exit Function
    k1:
        k = 1
        myDate = DateValue(strDATE)
        myDate = Format(myDate, "yyyy/m/d")
        TryChangeDate2 = myDate
        Exit Function
    TryChangeDate2ERR:
        Err.Clear
        If k = 0 Then
            nkkkk = Len(strK)
            Select Case nkkkk
                Case 4
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 1)
                    End If
                Case 5
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Val(Mid(strK, 3, 1)) >= 3 Then
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 2)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 1)
                        End If
                    End If
                Case 6
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Left(strK, 1) = "1" Or Left(strK, 1) = "2" Then
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 1)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 2)
                        End If
                        GoTo theEnd
                    End If
                        strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 1)
                Case 7
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Val(Mid(strK, 5, 1)) >= 3 Then
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 2)
                        Else
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 1)
                        End If
                    Else
                        If Val(Mid(strK, 4, 1)) >= 3 Then
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 2)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 2) & "/" & Mid(strK, 7, 1)
                        End If
                    End If
                Case 8
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 2)
                    Else
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 1)
                    End If
                Case 9
                    If Val(Mid(strK, 6, 1)) >= 3 Then
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 2)
                    Else
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 1)
                    End If
                Case 10
                    strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 2)
            End Select
    theEnd:
            GoTo k1
        End If
        TryChangeDate2 = strDATEcome
    End Function

    Public Function mTrim(ByVal strCome As String) As String '--此函数的作用是去掉字符串中间的空格 On Error GoTo mTrimErr Dim i As Integer, j As Integer Dim strLS As String, k As String * 1, strResult As String strLS = Trim(strCome) strResult = "" j = Len(strLS) For i = 1 To j k = Mid(strLS, i, 1) If k <> " " And k <> " " And VarType(k) <> vbNull And k <> vbNullString Then strResult = strResult & k End If Next mTrim = strResult Exit Function mTrimErr: Err.Clear mTrim = strCome End Function

    '---以上代码可实现在EXCEL指定列(上面指定为B列)中录入日期内容时,任意可识别的日期都会被自动转换成标准日期值,并以日期值存储在单元格中
    '---欢迎大家批评指正,如果发现错误,欢迎指正,如有不明子的地方,欢迎交流
    '--QQ: 578652607

     

    转载于:https://www.cnblogs.com/lhghroom/p/7648481.html

    展开全文
  • 建立“通报正文”表整理好“数据源”表与“数据转化”表后...③ 添加日期下拉输入控件,可直接复制“数据转化”表已设置好的下拉控件。④ 输入、设置通报正文,例如B4单元格输入“一、用户规模”,B5单元格输...

    建立“通报正文”表

    整理好“数据源”表与“数据转化”表后,接下来就该把每条通报正文与图表一一对应起来,按事先拟定的分析框架进行整理。

    ① 新建一张工作表,并命名为“日报正文”。

    ② 在A1单元格处输入通报标题,合并A1:H1单元格,并设置字体大小及排版居中。

    ③ 添加日期下拉输入控件,可直接复制“数据转化”表中已设置好的下拉控件。

    ④ 输入、设置通报正文,例如在B4单元格输入“一、用户规模”,在B5单元格输入“=数据转化!I18”,将新增用户数的柱形图复制到B5单元格所在行的下方,图表数据会随原图表数据的更新而更新。其他通报正文设置亦同此理,我就不再重复介绍,直接完成设置。

    ⑤ 可隐藏通报正文范围外无须用到的单元格区域,例如要隐藏I列及其以后的列,那么用鼠标选中I列,同时按下【Ctrl+Shift+→】三个键,并单击鼠标右键,选中【隐藏】即可,同理,还可隐藏无须用到的行。

    ⑥ 如果希望隐藏行、列标题,可通过【文件】→【选项】→【高级】,找到【显示行和列标题】的复选框,去除勾选即可。

    最终通报正文效果如图所示。

    c3156cabf0983a3377c349ed3d3e8e17.png

    数据提取自动化

    实现从数据库取数,把数据结果追加至Excel相应表中,需要用SQL与VBA语句,主要实现以下几个功能。

    ★ 打开Access数据库。

    ★ 输入提取数据的日期。

    ★ 运行指定的提数SQL语句。

    ★ 将SQL语句运行的数据结果自动追加到Excel“数据源”表的新记录中。

    相关的VBA语句编写如下:

    Sub每日数据提取()

    '声明定义VBA语句中需要使用到的各个变量类型

    Dim AdoConn As New ADODB.Connection '定义变量AdoConn为连接数据库对象(ADODB是数据库访问组件,Connection是其中的一个对象),用于实现连接数据库和关闭数据库连接等操作

    Dim MyData As String '定义变量MyData为字符串型变量,用于数据库路径赋值

    Dim N As Integer 定义变量N为数值型变量,用于Excel表行数赋值

    Dim D1 As Date '定义变量D1为日期型变量,用于数据起始日期赋值

    Dim D2 As Date '定义变量D2为日期型变量,用于数据结束日期赋值

    ' 定义SQL语句所需要的4个字符串型变量,可根据实际需要选择需要声明的变量个数

    Dim strSQL1 As String

    Dim strSQL2 As String

    Dim strSQL3 As String

    Dim strSQL4 As String

    ' InputBox函数的作用是打开输入对话框,提示输入提数日期,并赋值给D1,D2赋值D1+1

    D1 = InputBox("请输入需要提数的日期,例如:2011-9-4

    展开全文
  • 物流和会计行业的报表,经常需要手工输入一些日期,例如发货日期,在途时间、到达配送中心日期、签收日期等,如果手工输入,难免...下面简要介绍下如何利用日历控件Excel单元格中输入日期。第一步:选择工具箱中的...

    物流和会计行业的报表,经常需要手工输入一些日期,例如发货日期,在途时间、到达配送中心日期、签收日期等,如果手工输入,难免出错,而且不方便,影响工作效率。

    今天,尚西介绍一个非常简单的日历控件,只需要写入几行VBA代码即可,而且对不懂VBA代码的人来说,只需要修改其中一个数字即可,其他的都不用改动,非常简单,通用性极高。下面简要介绍下如何利用日历控件在Excel单元格中输入日期。

    第一步:选择工具箱中的日历控件,在excel工作表中用鼠标拖动,适当大小后放开,就在工作表中看到日历控件了。如图:

    61dcd137145acd4614c20c482b6e1407.png

    第二步:双击日历控件,进入VBE代码区,输入下面的代码,最终结果见截图。

    dec0cee922bc222fea535d15b6e036ef.png

    78ee83d1ec9eea4b885989600c3735a4.png

    需要注意的是,03版本,07版本,10版本的VBA后台,日历控件默认是没有引用的,有的甚至根本没有安装日历控件,也许这是office组件的系统bug。因此,需要下载mscal.ocx文件安装,并在注册表激活,大家如果在工程-引用中找不到,请百度下如何安装日历控件。

    e521adc659025a22ed9c69814cdbcb99.png
    展开全文
  • 几天前有人问我: Excel表格中输入信息时,如何在日期单元格中自动生成日期和时间?输入表格时,我们经常需要输入时间,而不是填写存储时间,为了减少输入工作量,您可以将日期设置为自动生成.例如,当我们B列...

    几天前有人问我: 在Excel表格中输入信息时,如何在日期单元格中自动生成日期和时间?

    输入表格时,我们经常需要输入时间,而不是填写存储时间,为了减少输入工作量,您可以将日期设置为自动生成.

    例如,当我们在B列中输入数据时,记录日期和时间是在A列同一行的相应单元格中自动生成的. 许多朋友可能会考虑使用VBA进行实施. 当然,有很多方法: 例如数据有效性,VBA或开放式迭代计算方法. 今天,我将与您分享其中之一: 迭代计算方法.

    Excel如何自动生成日期和时间

    如何在Excel表中自动生成记录数据的日期和时间-步骤如下:

    1. File-Options-Formula-Check“启用迭代计算”-将最大迭代次数设置为1-OK;

    启用迭代计算

    2. 选择单元格A2并输入公式= IF(ISBLANK(B2),'',IF(A2 ='',NOW(),A2));

    设置公式

    3. 选择单元格A2,然后将鼠标放在该单元格的右下角以下拉公式;

    填充公式

    4. 打开迭代计算功能,完成公式设置,并返回Excel工作表记录表中的数据,进入和退出时将自动生成记录日期和时间.

    自动生成记录日期和时间

    有关如何自动生成Excel表中记录数据的日期和时间的公式:

    IF(ISBLANK(B2),'',IF(A2 ='',NOW(),A2)),ISBLANK函数用于确定指定的单元格是否为空.

    如何在今天共享的Excel工作表中自动生成记录数据的日期和时间,希望对您工作中的所有朋友有所帮助!

    有关Office-Excel操作技能的更多信息,可以加入我们的小组来交流和共同学习! 159534659

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/shumachanpin/article-300260-1.html

    展开全文
  • 使用方法如下: ... 2、A1单元格中输入阳历日期,再另一个单元格输入公式=NongLi(A1),就可以自动将阳历转换成农历了。 Public Function NongLi(Optional xx_date As Date)Dim MonthAdd(11), NongliD...
  • VBA常用技巧

    2014-12-21 16:39:28
    12-1 在单元格中建立数据有效性 12 12-2 判断单元格是否存在数据有效性 12 12-3 动态的数据有效性 12 12-4 自动展开数据有效性下拉列表 12 技巧13 单元格中的公式 12 13-1 在单元格中写入公式 12 13-2 检查单元格...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    12-1 在单元格中建立数据有效性 39 12-2 判断单元格是否存在数据有效性 41 12-3 动态的数据有效性 41 12-4 自动展开数据有效性下拉列表 43 技巧13 单元格中的公式 44 13-1 在单元格中写入公式 44 13-2 检查单元格...
  • 01082在单元格中输入数字和文本 01083为输入对话框设置默认值 01084在指定时间运行程序(之一) 01085在指定时间运行程序(之二) 01086计划在未来运行一定时间的宏 01087计划每隔一段时间运行宏 01088取消以前计划...
  • 某朋友的某个单据用EXCEL制作,每天一张,每次修改日期太麻烦,因此想...在VBA窗口选择菜单插入,再选择菜单项模块 输入以下代码 Sub PrintDate() dim n as integer n=inputbox("请输入打印次数") *1 for i=1 t
  • Excel_VBA教程

    2014-09-22 11:36:34
    第六章 在VBA中重复操作 123 1.DO LOOPS: DO…WHILE和DO…UNTIL 123 2.观察过程执行 126 3.WHILE…WEND循环 127 4.FOR…NEXT 循环 128 5.FOR EACH…NEXT循环 129 7.提前跳出循环 130 8.循环嵌套 131 9.接下来… 131 ...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     11.1.6 在下一个空单元格中输入一个值  11.1.7 暂停宏的运行以便获得用户选中的单元格区域  11.1.8 计算选中的单元格的数目  11.1.9 确定选中的单元格区域的类型  11.1.10 有效地遍历选中的单元格区域  11.1....
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
     11.1.6 在下一个空单元格中输入一个值  11.1.7 暂停宏的运行以便获得用户选中的单元格区域  11.1.8 计算选中的单元格的数目  11.1.9 确定选中的单元格区域的类型  11.1.10 有效地遍历选中的单元格区域  11.1....
  • 输入代码的读者注意输入时的字符格式,不清楚之处可以参阅光盘的源 文件。本书各章最后两节均为小结和习题,以加深学习效果。 作者简介 本书目录 1 初识Excel VBA 2 VBA程序设计基础 3 VBA过程和对象 ...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    第六章 在VBA中重复操作 123 1.DO LOOPS: DO…WHILE和DO…UNTIL 123 2.观察过程执行 126 3.WHILE…WEND循环 127 4.FOR…NEXT 循环 128 5.FOR EACH…NEXT循环 129 7.提前跳出循环 130 8.循环嵌套 131 9.接下来… 131 ...
  • 日常工作,经常会遇到需要实时记录数据录入的时间问题。 有朋友会说了,用快捷键啊,按Ctrl+;(分号)可以返回当前的系统日期,按Ctrl+Shift+;...以下图为例,A列单元格输入或是修改内容后,B列就会自动的
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境基于应用程序自动化的优点................................................................................1 1.3录制简单的宏....................................................................
  • 对于80%的Excel用户来说,使用率...目的:指定的单元格中一次性输入“批量填充”。方法:1、选定目标单元格并输入“批量填充”。2、Ctrl+Enter批量填充。二、插入当前日期。技巧:Ctrl+;。目的:指定的单元格中...
  • 对于80%的Excel用户来说,使用率...目的:指定的单元格中一次性输入“批量填充”。方法:1、选定目标单元格并输入“批量填充”。2、Ctrl+Enter批量填充。二、插入当前日期。技巧:Ctrl+;。目的:指定的单元格中...
  • 因为函数today是取得当前日期,所以要保持是输入数据的日期不变,...首先选项的高级勾选“启用迭代计算”,再你的工作表除了日期肯定是要输入其它数据的。比如你要C1显示输入数据的日期,而A2以下是序号...
  • excel的使用

    2012-11-25 17:06:01
    这时如果我们输入“12”,就会在单元格中显示“正数:($12.00)”,如果输入“-0.3”,就会在单元格中显示“负数:($0.30)”,如果输入“0”,就会在单元格中显示“零”,如果输入文本“this is a book”,就会...
  • 小伙伴们周末好啊,今天老祝和大家分享一个实用好玩的技巧,Excel制作倒计时牌,先来看效果:日常...步骤1 假设假期结束日期为2020年12月21日0时,C2单元格输入以下公式,得到剩余的整数天数。=INT("2020...
  • 原标题:2020,已经进入倒计时小伙伴们好啊,今天老祝和大家分享一个实用好玩的技巧,Excel制作倒计时牌,先...步骤1 假设假期结束日期为2020年11月14日,C2单元格输入以下公式,得到剩余的整数天数。=INT("2...
  • 4.3 公式中输入函数的方法 4.3.1 手工输入函数 4.3.2 使用“插入函数”对话框输入函数 4.3.3 输入函数的其他技巧 4.4 函数种类  4.4.1 财务函数 4.4.2 日期及时间函数  4.4.3 数学及三角函数 4.4.4 统计...
  • 4.3 公式中输入函数的方法 4.3.1 手工输入函数 4.3.2 使用“插入函数”对话框输入函数 4.3.3 输入函数的其他技巧 4.4 函数种类  4.4.1 财务函数 4.4.2 日期及时间函数  4.4.3 数学及三角函数 4.4.4 统计...
  • 【百家姓与字母序列】:运行后可以在单元格中进行百家姓与字母填充,提升录入速度 【一键隐藏非使用区】:对空白区域瞬间隐藏起来。可以选择作用对象是当前表还是所有工作表。恢复时也只要瞬间完成 【复制粘贴可见...
  • 【百家姓与字母序列】:运行后可以在单元格中进行百家姓与字母填充,提升录入速度 【一键隐藏非使用区】:对空白区域瞬间隐藏起来。可以选择作用对象是当前表还是所有工作表。恢复时也只要瞬间完成 【复制粘贴可见区】...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【百家姓与字母序列】:运行后可以在单元格中进行百家姓与字母填充,提升录入速度 【一键隐藏非使用区】:对空白区域瞬间隐藏起来。可以选择作用对象是当前表还是所有工作表。恢复时也只要瞬间完成 【复制粘贴可见区】...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

vba在单元格中输入日期