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