2015-05-14 20 views
0

我在列AJ(任何地方从3到5或0个字符)中有不同字符长度的数据。我使用下面的一段代码来显示AK列中的字符长度。如果在VBA中的数据范围上应用if语句

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

我认为你需要使用'FIND';)。 –

回答

0

尝试

Range("AL3:AL15000").Formula = 
    "=IIF(AK3=3,CONCATENATE(0,0,AJ3),IIF(AK3=4,CONCATENATE(0,AJ3),AJ3))" 
0

我不知道这是否可能在您的Excel版本,但有可能是一个更简单的解决方案。

创建列AL,但为该列提供新格式。选择列,按CTRL-1,然后选择自定义。在我的情况下,有一个类型00000,如果它不在那里,在类型字段中键入5 0。

现在添加一个公式,只是将列AJ中的值复制到AL中。

如果您不关心AJ列的格式,则可以将上述格式应用于AJ列。

0

您可以使用TEXT函数吗(仅适用于数字数据)?

=TEXT(AD3,"00000") 
0

你也可以在这里很好地使用REPT并让它适用于任何长度小于焊盘长度的字符串。如果字符串比焊盘长度长,它会发生错误,但是听起来好像根据你的描述不会发生。

以下是AJ4中的数据示例。

=IF(AJ4<>"",REPT(0,5-LEN(AJ4))&AJ4,"") 

5更改为您希望填充的长度。