【发布时间】:2019-12-05 00:07:47
【问题描述】:
我有一个 Excel 文档,用于控制我企业中的 Office 许可证。我想编辑单元格以自动添加“-”,就像它在产品密钥中的显示方式一样。请记住,这些键遵循示例 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX,每组五个字符中都有数字和字母。用这种方式格式化单元格的代码是什么???
【问题讨论】:
标签: excel excel-formula
我有一个 Excel 文档,用于控制我企业中的 Office 许可证。我想编辑单元格以自动添加“-”,就像它在产品密钥中的显示方式一样。请记住,这些键遵循示例 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX,每组五个字符中都有数字和字母。用这种方式格式化单元格的代码是什么???
【问题讨论】:
标签: excel excel-formula
如果您有 OFFICE 365 Excel,您可以使用数组版本的 TEXTJOIN:
=TEXTJOIN("-",,MID(A1,(ROW(1:5)-1)*5+1,5))
作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。
如果你不那么简单的解析值和连接:
=LEFT(A1,5) & "-" & MID(A1,6,5) & "-" & MID(A1,11,5) & "-" & MID(A1,16,5 )& "-" & MID(A1,21,5)
【讨论】:
你可以使用:
=CONCATENATE(MID(A1,1,5),"-",MID(A1,6,5),"-",MID(A1,11,5),"-",MID(A1,16,5),"-",MID(A1,21,5))
这是适用于任何 Excel 版本的标准公式。
【讨论】:
您将无法在单元格中输入产品密钥,也无法使用单元格格式在同一单元格中添加破折号。如果您使用公式,则该公式必须位于单独的单元格中。如果你想让你输入key的单元格自动更新,你可以使用VBA来完成。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strOrig As String, strNew As String
If Target.Column = 1 Then
If Len(Target.Value) = 25 Then
strOrig = Target.Value
strNew = Left(strOrig, 5) & "-" & Mid(strOrig, 6, 5) & "-" & Mid(strOrig, 11, 5) & "-" & Mid(strOrig, 16, 5) & "-" & Right(strOrig, 5)
Target.Value = strNew
End If
End If
End Sub
将此代码放在您拥有数据的工作表中。此代码假定产品密钥位于 A 列中。如果它们位于不同的列中,请将 Target.column = 1 更改为相应的列号。
【讨论】: