如何最好地将 0 添加到 range.value 的开头,直到它在 Excel 中的长度为 13 个字符? [复制]
Posted
技术标签:
【中文标题】如何最好地将 0 添加到 range.value 的开头,直到它在 Excel 中的长度为 13 个字符? [复制]【英文标题】:How do I best add 0's to beginning of range.value until it is 13 characters long in Excel? [duplicate] 【发布时间】:2021-10-11 04:34:29 【问题描述】:我正在编写一个函数,它需要在不同范围内查找一定长度的代码,但并非所有代码都是正确的长度。在此范围内,可以通过在其前面添加额外的零来解决此问题。
所以我正在尝试编写一个宏的一部分,在代码前面添加 0,直到它正好有 13 个字符长(假设它还不是 13 个字符长)。
现在,我有这个,但我觉得它可以做得更好。特别是因为我不知道 10 是否是可能的最短长度。
Function BolS(Barc As Range) As String
Dim BarA As Range
If Len(Barc.value) = 10 Then
BarA = "000" & Barc.value
End If
If Len(Barc.value) = 11 Then
BarA = "00" & Barc.value
End If
If Len(Barc.value) = 12 Then
BarA = "0" & Barc.value
End If
If Len(Barc.value) = 13 Then
BarA = Barc.value
End If
也许用 13 减去 Len(Barc.value),然后加上那么多 0?
【问题讨论】:
【参考方案1】:如果它是一个数字,那么这将起作用:
Public Function PadMyNumber(Target As Range) As String
PadMyNumber = Format(Target, "0000000000000")
End Function
输出是字符串而不是数字。
【讨论】:
【参考方案2】:以下是添加填充的两个示例,但要使用 0 填充,您需要通过在前面加上 '
或将单元格设置为文本格式来明确声明其文本。超过 13 的长度可能会出错,这里没有考虑。
Sub Pad0()
ActiveCell.Offset(0, 1) = "'" & WorksheetFunction.Rept("0", 13 - Len(ActiveCell)) & ActiveCell
With ActiveCell
.Offset(0, 2).NumberFormat = "@"
.Offset(0, 2) = WorksheetFunction.Rept("0", 13 - Len(ActiveCell)) & .Value
End With
End Sub
【讨论】:
【参考方案3】:如果您已经知道将有 13 个字符的字符串,您可以通过以下方式确定它们的实际长度 如果 Len(Barc.value) = 13 那么 BarA = Barc.值 结束如果
If Len(Barc.value) = 13 Then
BarA = Barc.value
'Exit Sub
Else
'a = 13 - Len(Barc.value)
'BarA = WorksheetFunction.Rept("0", a) & Barc.value
BarA = WorksheetFunction.Rept("0", 13 - Len(Barc.value)) & Barc.value
End If
这部分根据需要重复“0”字符以达到 13 的长度:
WorksheetFunction.Rept("0", 13 - Len(Barc.value))
如果您的单元格格式不是文本格式,您必须在数字前保留一个“'”,以告知 Excel 它是字符串而不是数字(因为默认情况下不显示数字前面的全零)。您的新加起来将是引号:
BarA = "'" & WorksheetFunction.Rept("0", 13 - Len(Barc.value)) & Barc.value
【讨论】:
看起来可以。与:If Len(Barc.Value) < 13 Then BarA = Right(String(13, "0") & CStr(Barc.Value), Max(13, Len(CStr(Barc.Value)))) End If
有很大不同吗?
很高兴听到这个消息!如果您还有其他问题,请询问。否则不要忘记接受答案。
它没有成功,但幸运的是我发现BarA = WorksheetFunction.Text(Barc.Value, "0000000000000")
也有效。以上是关于如何最好地将 0 添加到 range.value 的开头,直到它在 Excel 中的长度为 13 个字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何正确地将 Polyfills 添加到 SystemJS Angular 4 应用程序
如何最好地将用 LAMP 制作的项目转移到 WAMP 而不破坏它?