在 Excel 中将一组字母转换为日期

在 Excel 中将一组字母转换为日期

我正在尝试将字母日期代码转换为日期。例如:SWITCHGEAR = 1,2,3,4,5,6,7,8,9 & 0。因此,当我输入字母“ SIRISC”的组合时,它将显示为13/03/14。我几乎尝试了所有方法,所以有人能给我指出正确的方向吗?

答案1

这是数组公式解决方案。对于 中的文本代码A1,请通过粘贴到公式栏中并按Ctrl+ Shift+在另一个单元格中输入Enter

=TEXT(SUM(MOD(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"SWITCHGEAR"),10)*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),"00"&CHAR(34)&"/"&CHAR(34)&"00"&CHAR(34)&"/"&CHAR(34)&"00")

具体来说:

FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"SWITCHGEAR")生成一个索引号数组,该数组与SWITCHGEARA1 中代码中每个字母的位置相匹配。对于您的示例,SIRISC生成数组{1,3,10,3,1,5}

通过将此表达式包装在内MOD(...,10),数组变成{1,3,0,3,1,5}

然后将该数组与数组相乘{10^5,10^4,10^3,10^2,10^1,10^0}以生成数组{100000,30000,0,300,10,5}

SUM然后使用该数组中的数字添加以形成130315

TEXT然后用于应用​​自定义格式,00"/"00"/"00以便该数字显示为13/03/15

答案2

假设:

  1. 文本 SIRISC 在 中A1

  2. 工作表2 A1你必须放RSWITCHGEA

然后,在单元格上尝试此公式表1 B1

=CONCATENATE(FIND(MID(A1,1,1),Sheet2!A1,1)-1,FIND(MID(A1,2,1),Sheet2!A1,1)-1,"/",FIND(MID(A1,3,1),Sheet2!A1,1)-1,FIND(MID(A1,4,1),Sheet2!A1,1)-1,"/",FIND(MID(A1,5,1),Sheet2!A1,1)-1,FIND(MID(A1,6,1),Sheet2!A1,1)-1)

答案3

选择包含字母组合的单元格并运行这个小宏:

Option Base 1
Sub DateMaker()
    Dim r As Range
    a = Array("S", "W", "I", "T", "C", "H", "G", "E", "A", "R")
    b = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
    For Each r In Selection
        t = r.Text
        For i = 1 To 10
            t = Replace(t, a(i), b(i))
        Next i
        r.Value = DateSerial(CInt("20" & Right(t, 2)), CInt(Mid(t, 3, 2)), CInt(Left(t, 2)))
        r.NumberFormat = "dd/mm/yy"
    Next r
End Sub

因此如果你从以下开始:

在此处输入图片描述

你最终会得到:

在此处输入图片描述

相关内容