我正在尝试将字母日期代码转换为日期。例如: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")
生成一个索引号数组,该数组与SWITCHGEAR
A1 中代码中每个字母的位置相匹配。对于您的示例,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
假设:
文本 SIRISC 在 中
A1
。在工作表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
因此如果你从以下开始:
你最终会得到: