在EXCEL表格中自动生成不变的日期

合集下载

通过VBA,当在EXCEL单元格中输入任意的日期格式时,都能自动转换为指定的标准格式的日期值

通过VBA,当在EXCEL单元格中输入任意的日期格式时,都能自动转换为指定的标准格式的日期值

通过VBA,当在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 nDatePrivate Sub Worksheet_Activate()'加载sheet的事件nDate = InputBox("请确定此⼯作表中第⼏列为⽇期型的数据!", "输⼊数字", "2")If nDate = ""ThennDate = 2 '--只操作指定的列号的列,⽬前只操作B列(第2列)ElsenDate = Val(nDate)End IfEnd SubPrivate Sub Worksheet_Change(ByVal Target As Range)'--sheet中任何地⽅发⽣数据改变时触发的事件If nDate = 0Then Exit SubIf Target.Cells.Column = nDate Then'--如果是第⼆列才检验⽂本为⽇期Target.Value = TryChangeDate2(Target.Value)End IfEnd SubPublic Function TryChangeDate2(ByVal strDATEcome As String) As VariantOn Error GoTo TryChangeDate2ERRDim strDATE As StringstrDATE = Trim(strDATEcome)Dim myDate As DateDim strK As StringstrK = mTrim(strDATEcome)Dim k As Integer, nkkkk As Integerk = -1k0:k = 0myDate = DateValue(strDATE)myDate = Format(myDate, "yyyy/m/d")TryChangeDate2 = myDateExit Functionk1:k = 1myDate = DateValue(strDATE)myDate = Format(myDate, "yyyy/m/d")TryChangeDate2 = myDateExit FunctionTryChangeDate2ERR:Err.ClearIf k = 0Thennkkkk = Len(strK)Select Case nkkkkCase4If InStr(1, strK, ".") = 0And InStr(1, strK, ",") = 0And InStr(1, strK, "/") = 0And InStr(1, strK, "\") = 0And InStr(1, strK, "-") = 0ThenstrDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 1)End IfCase5If InStr(1, strK, ".") = 0And InStr(1, strK, ",") = 0And InStr(1, strK, "/") = 0And InStr(1, strK, "\") = 0And InStr(1, strK, "-") = 0ThenIf Val(Mid(strK, 3, 1)) >= 3ThenstrDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 2)ElsestrDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 1)End IfEnd IfCase6If InStr(1, strK, ".") = 0And InStr(1, strK, ",") = 0And InStr(1, strK, "/") = 0And InStr(1, strK, "\") = 0And InStr(1, strK, "-") = 0ThenIf Left(strK, 1) = "1"Or Left(strK, 1) = "2"ThenstrDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 1)ElsestrDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 2)End IfGoTo theEndEnd IfstrDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 1)Case7If InStr(1, strK, ".") = 0And InStr(1, strK, ",") = 0And InStr(1, strK, "/") = 0And InStr(1, strK, "\") = 0And InStr(1, strK, "-") = 0ThenIf Val(Mid(strK, 5, 1)) >= 3ThenstrDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 2)ElsestrDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 1)End IfElseIf Val(Mid(strK, 4, 1)) >= 3ThenstrDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 2)ElsestrDATE = Left(strK, 2) & "/" & Mid(strK, 4, 2) & "/" & Mid(strK, 7, 1)End IfEnd IfCase8If InStr(1, strK, ".") = 0And InStr(1, strK, ",") = 0And InStr(1, strK, "/") = 0And InStr(1, strK, "\") = 0And InStr(1, strK, "-") = 0ThenstrDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 2)ElsestrDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 1)End IfCase9If Val(Mid(strK, 6, 1)) >= 3ThenstrDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 2)ElsestrDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 1)End IfCase10strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 2)End SelecttheEnd:GoTo k1End IfTryChangeDate2 = strDATEcomeEnd FunctionPublic Function mTrim(ByVal strCome As String) As String'--此函数的作⽤是去掉字符串中间的空格On Error GoTo mTrimErrDim i As Integer, j As IntegerDim strLS As String, k As String * 1, strResult As StringstrLS = Trim(strCome)strResult = ""j = Len(strLS)For i = 1To jk = Mid(strLS, i, 1)If k <> ""And k <> " "And VarType(k) <> vbNull And k <> vbNullString ThenstrResult = strResult & kEnd IfNextmTrim = strResultExit FunctionmTrimErr:Err.ClearmTrim = strComeEnd Function'---以上代码可实现在EXCEL指定列(上⾯指定为B列)中录⼊⽇期内容时,任意可识别的⽇期都会被⾃动转换成标准⽇期值,并以⽇期值存储在单元格中'---欢迎⼤家批评指正,如果发现错误,欢迎指正,如有不明⼦的地⽅,欢迎交流'--QQ: 578652607。

EXCEL表格快速录入当前日期和时间的5种方法,迭代计算自动生成时间

EXCEL表格快速录入当前日期和时间的5种方法,迭代计算自动生成时间

EXCEL表格快速录入当前日期和时间的5种方法,迭代计算自动生成时间在EXCEL表格里,可以使用函数的方式自动生成当前的日期,或是手动输入,或是使用键盘上的快捷组合键快速录入,这几种方式都有什么区别?下面我们一起来看看。

表格里的日期录入,标准方式有两种,带斜杠或是横杠,比如“1-1”或是“1/1”,回车后都能自动生成日期格式,并调整日期的格式的类型。

对于时间录入,小时、分钟或秒之间添加冒号隔开。

一、使用函数快速录入当前日期或时间(动态显示)单元格内输入函数“=NOW()”生成当前日期和时间,可打开单元格格式窗口设置显示格式。

单元格内输入函数“=today()”生成当前日期,同样可以在单元格格式设置窗口设置显示格式。

使用函数的方式生成的日期或时间都是动态的,可以按下F9键进行刷新或是编辑其他单元格激发日期或时间的刷新。

二、快捷方式快速录入当前日期或时间(静态显示)在键盘上按下组合快捷键“CTRL+;”生成当前日期。

在键盘上按下组合快捷键“CTRL+SHIFT+;”生成当前时间。

使用快捷键方式生成的日期或时间都是静止不动的。

三、下拉选择时间在制作数据报表的时候,如果想要记录下表格的修改时间或是核对时间等,可以采用下拉方式生成当时的时间,通过下拉方式生成的时间生成后也不会再自动刷新。

方法如下:找一个空白的单元格,输入函数“=now”,调整格式为时间格式。

选中表格里的核对时间列,点击菜单栏上“数据-数据验证-数据验证”。

弹出窗口,在设置标签下,点击允许,选择“序列”,在来源里选择前面输入函数的单元格。

单击确定后,返回表格,点击单元格,显示出下拉箭头,选择时间即可快速录入当前的时间。

录入后的时间会固定不再刷新,但如果需要修改的话,可以点击下拉箭头重新选择时间录入。

四、迭代计算自动填入当前时间看例子之前,我们先来看一个概念,迭代计算。

迭代,是指在满足特定数值条件之前重复计算工作表。

Excel 不能自动计算这样一个公式,该公式直接或间接引用了包含该公式的单元格。

excel连续序号公式

excel连续序号公式

excel连续序号公式
在Excel表格中,我们有时需要对数据进行编号,以便更好地对数据进行分类和管理。

使用连续序号可以使数据更易于理解和分析。

然而,手动输入连续序号会非常耗时,因此我们可以使用Excel中的公式来自动生成连续序号。

以下是几种实现自动生成连续序号的公式:
1. 使用自增函数AutoFill:
在第一个单元格中输入序号1,将光标放在该单元格的右下角,当光标变为黑色十字时,按住鼠标左键并向下拖动,Excel将自动填充下面的单元格。

这个方法称为AutoFill,会根据第一个单元格中的内容自动填充其他单元格。

2. 使用ROW函数:
在第一个单元格中输入序号1,然后在下一个单元格中输入以下公式:=ROW()-1,然后按下Enter键,Excel将自动填充下面的单元格。

这个公式的含义是从当前行数中减去1。

3. 使用COUNTIF函数:
在第一个单元格中输入序号1,然后在下一个单元格中输入以下公式:=COUNTIF($A$1:A1,'>0'),然后按下Enter键,Excel将自动填充下面的单元格。

这个公式的含义是统计单元格A1到当前单元格之间所有大于0的数字的数量。

以上是实现Excel连续序号公式的几种方法,可以根据自己的需要选择不同的方法。

Excel表格中的不规范日期问题如何解决

Excel表格中的不规范日期问题如何解决

Excel表格中的不规范日期问题如何解决我们在excel输入日期也是这样不按excel的规则来,比如20140821、2014.8.21等等这样非规范方式表示的日期,也就是我们所说的伪日期、假日期,这些日期在进行计算的时候,就会出现一些的问题。

以下是店铺为您带来的关于Excel不规范日期的解决方法,希望对您有所帮助。

Excel不规范日期的解决方法检查过伙伴的数据源,C列的计算工龄的公式并没有错。

错在B列的日期不规范。

给小伙伴修改的公式为:=DATEDIF(--TEXT(B2,"#-00-00"),NOW(),"Y"),下拉就可以计算出工龄。

是这样给小伙伴解释公式的:因为excel可以识别以短横线分隔的日期格式,因此用text函数返回以短横线的格式文本:TEXT(B2,"#-00-00")。

这个公式可以将“20140821”,转换为"2014-08-21"。

又因为text函数转换后得到的日期是文本格式,因此再在text函数前面加上两个负号,作用就是“减负运算”,将文本型日期转换为真正的日期格式。

除了使用—的方法,还可以使用*1等等形式,也可以将文本数值转换为真正的数字,因此公式还可以修改为:=TEXT(B2,"#-00-00")*1。

转换后的日期格式做为DATEDIF函数的第一参数就不会有错了。

哎哟,自从小伙伴要求写公式的时候,尽量把公式也解释清楚,方便大家理解公式的意义。

实质上还是希望大家想要全面系统学习,可以报名滴答老师的《Excel极速贯通班》。

除了在公众号里面给大家分享互动,更多的时候也在扮演另外一个角色,在VIP学员群任助教,辅助老师教学,对伙伴们的各种问题进行答疑。

大家对报名课程有什么问题,也可以加微信:133****2428沟通哈。

上面我们说了另外一种非标准日期,如下图所示,如何转换为标准日期?A2的假日期,通过公式:=--SUBSTITUTE(A2,".","/")转换之后,还需要将单元格设置为“日期”格式哟!SUBSTITUTE函数,在前几天的推送教程里面详细讲解过哦,所以这个函数就不再此赘述了。

Excel表格中根据身份证号码自动填出生日期

Excel表格中根据身份证号码自动填出生日期

Excel表格中根据身份证号码自动填出生日期、计算年龄18位身份证号码转换成出生日期的函数公式:如果E2中是身份证,在F2 中求出出生日期,F2=DATE(MIDB(E2,7,4),MIDB(E2,11,2),MIDB(E2,13,2))自动录入男女:=IF(MOD((IF(LEN(e2)=18,MID(e2,17,1),MID(e2,15,1))),2)=0," 女","男")15/18位都可以的公式:转换出生日期:=IF(LEN(e2)=18,TEXT(MID(e2,7,8),"#-00-00"),"19"& TEXT(MID(e2,7,6),"#-00-00"))自动录入男女:=IF(E2="","",IF(MOD(RIGHT(LEFT(E2,17),1),2)=0,"女","男"))计算年龄(新旧身份证号都可以):=IF(AND(E2=""),"",IF(MIDB(E2,7,2)="19",107- MIDB(E2,9,2),107-MIDB(E2,7,2)))WPS表格提取身份证详细信息前些天领导要求统计所有员工的性别、出生日期、年龄等信息,并且要得很急。

而我们单位员工人数众多,短时间内统计相关信息并且输入计算机几乎是不太可能的。

幸好在以前的一份金山表格中我们曾经统计有所有员工的身份证号码,而身份证中正有我们所需要的性别、出生日期、年龄等信息的。

所以,干脆,还是直接在金山表格中从身份证号码提取相关的信息吧。

身份证号放在A2单元格以下的区域。

我们需要从身份证号码中提取性别、出生日期、年龄等相关信息。

由于现在使用的身份证有15位和18位两种。

所以,在提取相关信息时,首先应该判断身份证号码的数字个数,然后再区别不同情况进行相关处理。

excel取整 和不变 高级技巧 数组

excel取整 和不变 高级技巧 数组

Excel作为一款功能强大的电子表格软件,拥有众多强大的计算和数据处理功能。

在实际应用中,很多复杂的数据处理需求常常需要使用一些高级技巧和函数来实现。

本文将结合excel取整和不变高级技巧以及数组的相关知识,为大家详细介绍这些技巧的使用方法和实际应用场景。

一、excel取整的高级技巧1.1 ROUND函数ROUND函数是excel中用于对指定数值进行四舍五入取整操作的函数,语法为:=ROUND(number,num_digits)。

其中number为待取整的数值,num_digits为保留的小数位数。

该函数常用于需要对数值进行精确的取整操作。

1.2 ROUNDUP和ROUNDDOWN函数ROUNDUP函数和ROUNDDOWN函数分别用于向上取整和向下取整操作。

它们的语法分别为:=ROUNDUP(number,num_digits)和=ROUNDDOWN(number,num_digits)。

在实际应用中,常常需要根据不同的需求选择合适的取整方式。

1.3 INT和TRUNC函数INT函数和TRUNC函数分别用于向下取整和截断小数部分。

它们的语法分别为:=INT(number)和=TRUNC(number, num_digits)。

INT函数直接去掉小数部分返回整数值,而TRUNC函数可以指定保留的小数位数后截断小数部分。

1.4 MROUND和CEILING函数MROUND函数和CEILING函数分别用于对数值进行指定步长取整和向上取整到指定的倍数。

它们的语法分别为:=MROUND(number, multiple)和=CEILING(number, significance)。

这些函数在一些特定的商业和财务计算中具有重要的应用价值。

1.5 MOD函数MOD函数用于计算两个数值相除的余数,其语法为:=MOD(number, divisor)。

在实际应用中,MOD函数可以用于一些特定的数据处理和业务逻辑的计算。

excel排班表自动生成技巧

excel排班表自动生成技巧

Excel排班表自动生成的技巧包括以下步骤:设定排班规则:首先需要设定排班的规则,包括班次类型、员工数量、工作时间等。

例如,可以设定早班、中班、晚班等班次,每个班次需要安排的员工数量,以及每个班次的工作时间。

创建员工信息表:在Excel表格中,创建一个员工信息表,包括员工的姓名、员工编号、职位等信息。

这些信息将用于后续的排班计算。

设定排班周期:确定排班的周期,例如一周或一个月。

在Excel表格中,创建一个日期列,并填入排班周期内的日期。

编写排班公式:使用Excel的公式功能来自动计算排班结果。

可以使用IF 函数、VLOOKUP函数等根据设定的规则和条件进行排班。

例如,使用IF函数判断某个日期的班次类型,然后根据员工数量和工作时间进行分配。

调整排班计划:如果有特殊情况,如员工请假或调班,可以手动调整排班计划。

在Excel表格中,修改相应的单元格即可。

生成排班表:根据设定的排班规则和计算结果,生成排班表。

将员工的姓名和对应的班次填入相应的单元格。

使用条件格式化:可以使用Excel的条件格式化功能来突出显示排班表中的特定信息,例如显示加班日期或休息日。

自动化排班更新:为了保持排班表的最新状态,可以将排班表与员工信息表和日期列相关联。

当员工信息或日期发生变化时,排班表将自动更新。

使用数据透视表:为了更好地分析排班数据,可以使用Excel的数据透视表功能。

通过数据透视表,可以快速查看不同时间段、不同班次的排班情况。

保护工作表:为了防止排班表被误修改,可以使用Excel的保护工作表功能。

这样只有受保护的部分可以被修改,其他部分将被锁定。

以上是Excel排班表自动生成的一些技巧,可以根据具体情况选择适合的方法来自动生成排班表,提高工作效率。

Excel表格身份证号码提取出生日期的公式

Excel表格身份证号码提取出生日期的公式

Excel表格身份证号码提取出生日期的公式
Excel表格身份证号码提取出生日期的公式
(A1表示身份证号码所在的列位置)
=MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2)回车→向下填充
1.Excel表中用身份证号码中取其中的号码用:MID(文本,开始字符,所取字符数);
2.15位身份证号从第7位到第12位是出生年月日,年份用的是2位数。

3.18位身份证号从第7位到第14位是出生的年月日,年份用的是4位数。

4.从身份证号码中提取出表示出生年、月、日的数字,用文本函数MID( )可以达到目的。

MID( )——从指定位置开始提取指定个数的字符(从左向右)。

对一个身份证号码是15位或是18位进行判断,用逻辑判断函数IF()和字符个数计算函数LEN( )辅助使用可以完成。

综合上述分析,可以通过下述操作,完成形如1978-12-24样式的出生年月日自动提取:假如身份证号数据在A1单元格,在B1单元格中编辑公式
15位身份证号码:=MID(A1,7,2)&"-"&MID(A1,9,2)&"-"&MID(A1,11,2),
18位身份证号码:=MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2))
回车确认即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在EXCEL表格中自动生成不变的日期?
Alt+F11,在“工程”窗口里选择工作表,代码窗口输入下面的代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [a1] <> "" And [b1] = "" Then
[b1] = Date
End If
End Sub
1、在某一单元格中插入日历控件
(1)选中要插入日历控件的单元格,设置单元格格式为日期型;
(2)点击工具栏,“插入—对象—日历控件”,
(3)用快捷方式Alt+F11,双击插入控件的工作表名称,粘贴下面的代码,用来实现单击A1时弹出日历控件,单击日历控件后,将选中的日期值填入A1并隐藏控件。

Private Sub Calendar1_Click()
ActiveCell = Calendar1
Calendar1.Visible = False
[a2].Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then Calendar1.Visible = True
End Sub
2、某一列全部设置为插入日历控件。

例如;在C列中,无论点击哪个单元格,就弹出日历控件,选择一个日期后,日期自动插入到单元格;除C列之外,点击其他单元格,不会弹出日历选择控件;
同上面(1)(2)步后,选择日历控件,双击鼠标,进入代码编辑模式,选择Worksheet和SelectionChange,输入代码:
Private Sub Calendar1_Click()
ActiveCell = Calendar1.Value
Me.Calendar1.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
Me.Calendar1.Visible = True
Else
Me.Calendar1.Visible = False
End If
End Sub
完成后,运行VBA代码,返回Excel操作窗口,即可实现。

本文来自: 同城老乡论坛() 详细出处参考:
/thread-25063-1-1.html
在EXCEL中能不能在两个工作表之间创建一个下拉列表,例如:我在SHEET1中创建了一个列表,我想在SHEET2中创建一个下拉列表
表一取名为“分类”,在表“分类”的A列输入各种类别。

选中A列整列,在“名称框”(左上角表外显示A1的那个格子里输入“分类”,这样整个A列就叫“分类”了。

选中表二的某格(暂为C1吧),点“数据/有效性”,点“设置”在“允许”中选“序列”,在“来源”中输入:
=INDIRECT("分类")。

确定后退出。

选中“C1”格向下填充,这样你点中C列中的单元格,出会出现下拉框,中间有“分类”表中的内容可选。

相关文档
最新文档