2015-05-14 21 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更改爲您希望填充的長度。