
知道用函数,那就可以用vba,
for i=1 to 10cells(1,i)=worksheetfunctionweeknum(cells(2,i),1)
next i
假设有10列
Dim ThisDay As String = Format(Now, "yyyy-MM-dd") '获得当前日期字符串
Dim ThisDateTime As DateTime = ConvertToDateTime(ThisDay) '当前日期转换成DateTime
Dim ThisWeekDay As Integer = ThisDateTimeDayOfWeek '获得当前日期是星期几
Dim differadd As Integer = 1 - ThisWeekDay '相差的天数(星期1与当前星期几相差的天数)
Dim MyAdd As New TimeSpan(differadd, 0, 0, 0)
Dim MyYear As Integer = Format(Now, "yyyy") '获取当前日期的年份
Dim MyMonth As Integer = Format(Now, "MM") '获取当前日期的月份
Dim MyDay As Integer = Format(Now, "dd") '获取当前日期是几号
Dim MyToday As DateTime = New DateTime(MyYear, MyMonth, MyDay)
Dim Yourday As DateTime = MyTodayAdd(MyAdd)
MsgBox("本周星期一的日期是:" & Yourday)
不用vba就可以解决
在第一列输入日期,将单元格的格式设置为日期格式
在第二列让每行的值等于第一列对应行,然后将第二列单元格格式设置为日期格式中的星期几这种类型,就ok了
Option Explicit
Sub zjh()
Dim i%, ttlR%, mD As Date
ttlR = 10 '最大行数
mD = Date
For i = 1 To ttlR
Cells(i, 1)Value = Month(mD + i - 1) & "/" & Day(mD + i - 1) & Chr(10) & Format(mD + i - 1, "ddd")
Next
End Sub
WorksheetsCount
'获得当前工作薄含有工作表的数量
ActiveSheetName
'获得当前被激活的工作表的名称
Worksheets(表名变量)Select
'激活该工作表
Weekday (变量,2)
把变量的日期,转为星期几
这个数据是1~7,即我们认知的星期一到星期天
写个判断,如果今天是1,则输出显示”星期一“。依次类推
这样就得到了你想要的代码的所有关键性数据,简略代码如下:
for i=1 to WorksheetsCount ‘循环1到最后一张表
Worksheets(i)Select '激活第1张表,Worksheets()中是纯数字,则找到对应顺序的表
变量名1=ActiveSheetName '获得该表的名称
变量名2=Weekday (Worksheets(变量名1)Range(f1),2) '获得F1单元格中的日期,并转为星期几
Select Case 变量名2
Case 1
Worksheets(变量名1)Range(g1)="星期一" '如果变量名2的数据是1,则在G1里显示”星期一“
Case 2
Worksheets(变量名1)Range(g1)="星期二"
Case 3
Worksheets(变量名1)Range(g1)="星期三"
Case 4
Worksheets(变量名1)Range(g1)="星期四"
Case 5
Worksheets(变量名1)Range(g1)="星期五"
Case 6
Worksheets(变量名1)Range(g1)="星期六"
Case 7
Worksheets(变量名1)Range(g1)="星期天"
End Select
next i
date为当日的日期,通常now为日期时间格式,而DATE 只去日期格式。
=Format("3/31/09", "mm-dd-yyyy")
关于此例中用到的Format函数的相关知识:
Format函数
根据有效的命名表达式来对指定的表达式进行格式化。
Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
Format 函数具有下面几个参数:
expression 必要参数。任何有效的表达式。
format 可选参数。有效的命名表达式或用户自定义格式表达式。
firstdayofweek 可选参数。常数,表示一星期的第一天。
firstweekofyear 可选参数。常数,表示一年的第一周。
扩展资料:
Month 代表每年中月份的数字。如果所输入的月份大于 12,将从指定年份的一月份开始往上加算。例如:DATE(2008,14,2) 返回代表 2009 年 2 月 2 日的序列号。
如果所输入的月份小于 0,将从指定年份前一年的十二月份开始往下减去相应的月份数。例如:DATE(2008,-3,2) 返回代表 2007年 9 月 2 日的序列号。
Day 代表在该月份中第几天的数字。如果 day 大于该月份的最大天数,则将从指定月份的第一天开始往上累加。例如,DATE(2008,1,35) 返回代表 2008 年 2 月 4 日的序列号。
参考资料来源:百度百科-date函数
以上就是关于EXCEL工作表中,02行是日期,如何用VBA在01行中显示第几周全部的内容,包括:EXCEL工作表中,02行是日期,如何用VBA在01行中显示第几周、vb.net中如何获取当前日期所在星期的星期一的具体年月日、请问各位EXCEL高手,如何在知道日期的情况下,知道是星期几呢VBA等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)