楼主 liuguansky |
Q:比如输入的是“星期一”,显示为“1”,输入的是“星期二”,显示为“2”。 A: 一、如果是输入星期数,但是显示为对应数字可用以下方法: 1:条件格式<2007及以上版本适用> 七个条件 等于星期一,设置自定义格式为;;;"1" 依次设置到星期天 2.VBA循环判断为星期几,同时设置自定义格式为;;;"几"<K哥所写代码可用> 具体代码如下:
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim Rng As Range
- Dim N As Integer
- Dim Arr1, Arr2
- Arr1 = Split("一,二,三,四,五,六,日", ",")
- Arr2 = Split("1,2,3,4,5,6,7", ",")
- For Each Rng In Target
- For N = LBound(Arr1) To UBound(Arr1)
- If Rng.Value = "星期" & Arr1(N) Then
- Rng.NumberFormatLocal = ";;;""" & Arr2(N) & """"
- Exit For
- End If
- Next N
- Next Rng
- End Sub
二、如果直接在当前单元格输入后,值更改为数字的话 1:自动更正功能 2:循环判断后赋值<标哥所写代码可用> 具体代码如下:
- Private Sub Worksheet_Change(ByVal Target As Range)
- Select Case Target.Value
- Case "星期一"
- Target = 1
- Case "星期二"
- Target = 2
- Case "星期三"
- Target = 3
- Case "星期四"
- Target = 4
- Case "星期五"
- Target = 5
- Case "星期六"
- Target = 6
- Case "星期日"
- Target = 7
- End Select
- End Sub
三、如果是在其它单元格显示为数字: 草版,XYH9999的公式都可用。 数组公式:- =MATCH(A1,TEXT(ROW($1:$7)+1,"aaaa"),0)
普通公式:- =MIN(FIND(RIGHT(A1),"一二三四五六七日天"),7)
或- =VLOOKUP(A1,{"星期一",1;"星期二",2;"星期三",3;"星期四",4;"星期五",5;"星期六",6;"星期日",7;"星期天",7},2,FALSE)
不过建议使用如下数组公式- =TEXT(FIND(RIGHT(A1),TEXT(1234567,"[$-804][dbnum1]0")&"日天"&A1),"[>9]不是合理星期格式;[>6]7;0")
可识别星期错误 所有的解决方法见附件示例:
如有不对之处,请指正,同时欢迎有新方法的提出,共同讨论。 |