我在列AJ
中有不同字符长度的数据(3到5之间,或0个字符)。我使用以下代码来显示AK列中的字符长度。
Range("AK3:AK15000").Formula = "=LEN(AJ3)"
我想在AL列中创建一个新的数据列,这样如果AK中的字符长度为5,它将返回AJ列中的数据。如果AK中的字符长度是4,我需要它返回AJ列中的内容,但前面有一个零(0)。如果字符长度为3,我需要它返回AJ列中的内容,但前面有两个零(00)。如果字符长度为零(0),则不返回任何内容。以下代码无效并返回错误。
If Range("AK3:AK15000").Value = 5 Then
Range("AL3:AL15000").Formula = "=AJ3"
ElseIf Range("AK3:AK15000").Value = 3 Then
Range("AL3:AL15000").Formula = "CONCATENATE(0,0,AJ3)"
ElseIf Range("AK3:AK15000").Value = 4 Then
Range("AL3:AL15000").Formula = "CONCATENATE(0,AJ3)"
End If
有人可以帮帮我吗?
答案 0 :(得分:0)
尝试
Range("AL3:AL15000").Formula =
"=IIF(AK3=3,CONCATENATE(0,0,AJ3),IIF(AK3=4,CONCATENATE(0,AJ3),AJ3))"
答案 1 :(得分:0)
我不知道你的Excel版本是否可行,但可能有一个更简单的解决方案。
创建列AL,但为列提供新格式。选择列,按CTRL-1,然后选择自定义。在我的情况下,有一个类型00000,如果它不存在,在字段上键入5 0表示类型。
现在添加一个公式,只将AJ中的值复制到AL。
如果您不关心AJ列的格式,可以将上述格式应用于AJ列。
答案 2 :(得分:0)
您是否可以使用TEXT函数(但仅限数字数据)?
=TEXT(AD3,"00000")
答案 3 :(得分:0)
你也可以在这里充分利用REPT
,让它适用于任何长度小于垫长度的字符串。如果字符串长度超过打击垫长度,则会出错,但听起来根据您的描述不会发生。
以下是AJ4
中数据的示例。
=IF(AJ4<>"",REPT(0,5-LEN(AJ4))&AJ4,"")
将5
更改为您想要填充的长度。