ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 综合应用 > 如何让输入的星期显示为对应数字?

如何让输入的星期显示为对应数字?

作者:绿色风 分类: 时间:2022-08-18 浏览:288
楼主
liuguansky
Q:比如输入的是“星期一”,显示为“1”,输入的是“星期二”,显示为“2”。
A:
一、如果是输入星期数,但是显示为对应数字可用以下方法:
1:条件格式<2007及以上版本适用>
七个条件
等于星期一,设置自定义格式为;;;"1"
依次设置到星期天
2.VBA循环判断为星期几,同时设置自定义格式为;;;"几"<K哥所写代码可用>
具体代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Rng As Range
  3. Dim N As Integer
  4. Dim Arr1, Arr2
  5. Arr1 = Split("一,二,三,四,五,六,日", ",")
  6. Arr2 = Split("1,2,3,4,5,6,7", ",")
  7. For Each Rng In Target
  8. For N = LBound(Arr1) To UBound(Arr1)
  9. If Rng.Value = "星期" & Arr1(N) Then
  10. Rng.NumberFormatLocal = ";;;""" & Arr2(N) & """"
  11. Exit For
  12. End If
  13. Next N
  14. Next Rng
  15. End Sub

二、如果直接在当前单元格输入后,值更改为数字的话
1:自动更正功能
2:循环判断后赋值<标哥所写代码可用>
具体代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Select Case Target.Value
  3. Case "星期一"
  4. Target = 1
  5. Case "星期二"
  6. Target = 2
  7. Case "星期三"
  8. Target = 3
  9. Case "星期四"
  10. Target = 4
  11. Case "星期五"
  12. Target = 5
  13. Case "星期六"
  14. Target = 6
  15. Case "星期日"
  16. Target = 7
  17. End Select
  18. End Sub

三、如果是在其它单元格显示为数字:
草版,XYH9999的公式都可用。
数组公式:
  1. =MATCH(A1,TEXT(ROW($1:$7)+1,"aaaa"),0)

普通公式:
  1. =MIN(FIND(RIGHT(A1),"一二三四五六七日天"),7)

  1. =VLOOKUP(A1,{"星期一",1;"星期二",2;"星期三",3;"星期四",4;"星期五",5;"星期六",6;"星期日",7;"星期天",7},2,FALSE)

不过建议使用如下数组公式
  1. =TEXT(FIND(RIGHT(A1),TEXT(1234567,"[$-804][dbnum1]0")&"日天"&A1),"[>9]不是合理星期格式;[>6]7;0")
可识别星期错误
所有的解决方法见附件示例:


如有不对之处,请指正,同时欢迎有新方法的提出,共同讨论。
2楼
wjc2090742
众多高手出招的集合,相当不错,学习了。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap