5如果陈述公式

我最近创build了一个IF公式来运行一个macros只有2个语句,但我需要再添加3个。

这是为了改变文件名。 所以我使用LEN来确定它是什么types的文件,然后运行适当的公式来修剪掉我不想要的东西。

例子:

=CHAR(83)&CHAR(45)&LEFT(B11,LEN(B11)-9)&CHAR(45)&UPPER(MID(B11,4,LEN(B11)-8))&CHAR(32)&D11&E11

=CHAR(83)&CHAR(45)&LEFT(B12,LEN(B12)-10)&CHAR(45)&UPPER(MID(B12,4,LEN(B12)-9))&CHAR(32)&D12&E12

=CHAR(83)&CHAR(68)&CHAR(45)&UPPER(MID(B13,5,LEN(B13)-12))&CHAR(45)&UPPER(MID(B13,8,LEN(B13)-12)&CHAR(32)&D13&E13)

=LEFT(B14,LEN(B14)-9)&CHAR(45)&UPPER(MID(B14,8,LEN(B14)-12))&CHAR(32)&D14&E14 REF-173d0221.pdf = REF- =LEFT(B14,LEN(B14)-9)&CHAR(45)&UPPER(MID(B14,8,LEN(B14)-12))&CHAR(32)&D14&E14

=LEFT(B15,LEN(B15)-10)&CHAR(45)&UPPER(MID(B15,8,LEN(B15)-13))&CHAR(32)&D15&E15 REF-173d02210.pdf = REF- =LEFT(B15,LEN(B15)-10)&CHAR(45)&UPPER(MID(B15,8,LEN(B15)-13))&CHAR(32)&D15&E15

我很难将它们链接在一起,以便根据单元格的长度应用正确的公式。

注意:我使用CHAR(83)&CHAR(45)而不是"S-"因为VBA不喜欢文本。 一旦一切正常,我会用" & aCell & "更新"B12"单元格标签。

我的vba代码如下所示:

 .Range("C2:C" & LastRow).Formula = "=IF(LEN(" & aCell & ")=12,CHAR(83)&CHAR(45)&LEFT(" & aCell & ",LEN(" & aCell & ")-9)&CHAR(45)&UPPER(MID(" & aCell & ",4,LEN(" & aCell & ")-8))&CHAR(32)&" & dCell & "&" & eCell & ",LEFT(" & aCell & ",LEN(" & aCell & ")-9)&CHAR(45)&UPPER(MID(" & aCell & ",8,LEN(" & aCell & ")-12))&CHAR(32)&" & dCell & "&" & eCell & ")" 

这似乎适用于前三个例子公式。

在这里输入图像说明

我会把它留给你来翻译剩余的2公式到VBA,你应该能够做以下我的例子:)

 Option Explicit Sub foo() Dim rng As Range, aCell As Range Dim val As String Set rng = Range("B1:B5") '## Modify the input range as needed. For Each aCell In rng.Cells Select Case Len(aCell) Case 12 val = "S-" & Left(aCell, Len(aCell) - 9) & "-" & Mid(aCell, 4, Len(aCell) - 8) Case 13 val = "S-" & Left(aCell, Len(aCell) - 10) & "-" & Mid(aCell, 4, Len(aCell) - 9) Case 15 val = "SD-" & Mid(aCell, 5, Len(aCell) - 12) & "-" & Mid(aCell, 8, Len(aCell) - 12) Case 16 val = "REF-" '## Modify as needed Case 17 val = "REF-" '## Modify as needed Case Else 'maybe warn the user this input is not anticipated... MsgBox "Unsupported length!", vbInformation End Select val = UCase(val) '## Append the values from column D,E: val = val & " " & aCell.Offset(, 2) & aCell.Offset(, 3) '## Write out to the workbook in column F, modify the "5" to specify a different location if needed eg, "-1" would put it in column A, "0" would put in same column B, etc. aCell.Offset(, 4).Value = val Next End Sub