在VBA中应用if语句范围的语句

时间:2015-05-14 13:16:07

标签: excel-vba vba excel

我在列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

有人可以帮帮我吗?

4 个答案:

答案 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更改为您想要填充的长度。