250分最高分求做一个EXCEL时间表,高手进
发布网友
发布时间:2022-05-15 00:42
我来回答
共5个回答
热心网友
时间:2023-11-16 00:17
按你的要求做了一张时刻表。
方法很笨,贴出来,让砖家门来丢砖头:
a、b、c三列设置自定义格式为yyyy-mm-dd hh:mm
b1=today()-1;昨天的日期
b2=2008-7-2 20:33;起始时刻
b3=b2+time(0,43,0);等于上一格时刻加上43分钟
b3公式向下拖2500行左右,使出现昨天日期
c2=if(b2<b$1,"",b2)
双击c2填充柄,这样c列显示的第一个时刻将作为a列的起始时刻
a1=min(c:c);取c列的第一个时刻
a2=a1+time(0,43,0),双击a1填充柄
a列出现的时间(2500行)应该不止三天的了,要想少一点,可删掉一些,要想多一点,还可往下拖。
最后隐藏b列和c列。
用VBA代码实现:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
cells(1,1) = DateValue("2008-7-2") + TimeValue("20:33:00")
While cells(1,1) < cells(1,2)
cells(1,1) = cells(1,1) + TimeValue("0:43:0")
Wend
'递加43分钟,直到满足要求
For i = 2 To 100
'3天:3*24*60/43=100.46,100行正好。
Cells(i, 1) = Cells(i - 1, 1) + TimeValue("0:43:0")
Next
End Sub
关闭代码窗口,b1输入=today()-1,回车。
VBA就是简单,复制代码过去就行了。前面的笨办法不好复制的。
热心网友
时间:2023-11-16 00:17
在A1输入
=TEXT(TODAY()+TIME(20,33,0),"YYYY-MM-DD HH:MM")
其中TIME函数中的参数为小时,分钟,秒,你可以修改.改成你的起始时时.
然后在B1输入
=TEXT($A$1-TIME(0,43,0)*(INT(24*60/43)-ROW(A1)+1),"YYYY-MM-DD HH:MM")
然后向下填充,填充到你要的最后一个时间.
以后你打开表,只要日期有变,数据就会变.
热心网友
时间:2023-11-16 00:18
在A1单元格输入开始日期和时间(比如"2008-7-2 20:33"),在A2单元格输入数组公式:
=SMALL(IF(A$1+ROW($1:$10000)*43/60/24+2>TODAY(),A$1+ROW($1:$10000)*43/60/24+2),ROW(1:1))
公式以CTRL+SHIFT+回车结束.
将公式向下复制到A102单元格.
然后将A1单元格字体设为白色.
A2:A102区域就是最近三天的时间表.
热心网友
时间:2023-11-16 00:18
我想用VBA可以,现提供一个基本想法:
一、打开工作簿时删除时间<NOW()-3的单元,再把下面三天内的数据上移;
二、每隔43分钟自动增加一行可用:
Application.OnTime Now() + TimeValue("00:43:00") "Add_OneLine"
Add_OneLine为自动增加一行的一个Sub
在这个Sub最后一行也加
Application.OnTime Now() + TimeValue("00:43:00") "Add_OneLine"
热心网友
时间:2023-11-16 00:19
1\在你的表头合适的位置插入一个命令按扭(方法:"视图"-"工具栏"-"控件工具箱",在里面点"命令按扭",在合适位置画出来即可)
2\将您的命令按扭改名这"更新"(可省略)
3\双击您所画的命令按扭
4\在里面输入以下内容
Dim a As Long, b As Long
Dim i As Long, c As Integer
Rows.Hidden = False
b = Fix(Now())
For i = 12 To 1 Step -1
a = Fix(Cells(i, 1))
c = a - b
If Abs(c) > 3 Then
ActiveSheet.Rows(i).Hidden = True
End If
Next i
注:里面的i指的是您要操作的那一列的最大列数,For i = 12 To 1 Step -1中指的是最大的是12行,要根据您的内容改"12",1指的是从哪一行开始,如果您的表中是从第二行开始,就将1改成2就行了.
5\输入完成后就关闭,再点"工具"-"宏"-"安全性",在里面选择"低"
6\保存,关闭,重启.