我想创建一个宏来检查列的所有单元格,如果单元格的前两个字符是“BB”,那么我希望宏从单元格中提取三个字符并将其粘贴到下一列但是一个相应的行。 但是if子句后的公式不起作用。 这是我以后所做的:
Sub test()
Dim lmid As String
Dim srange, SelData, ExtBbFor As String
Dim lastrow As Long
Dim i, icount As Integer
lastrow = ActiveSheet.Range("B30000").End(xlUp).Row
srange = "G1:G" & lastrow
SelData = "A1:G" & lastrow
Range(srange).Formula = "=mid(E1,1,3)"
For i = 1 To lastrow
If InStr(1, LCase(Range("E" & i)), "bb") <> 0 Then
Range("G" & i).Formula = "=mid("E & i", 4, 3)"
End If
Next i
End Sub
提前致谢
答案 0 :(得分:0)
尝试下面的内容。它会起作用
Range("G" & i).Value = Mid(Range("E" & i), 4, 3)
如果单元格不限于7,则需要如下
Range("G" & i).Value = "=Mid(E" & i & ", 3, " & Len(E & "& i & ") & ")"
它将从第3个字符中提取到单元格中的最后一个字符。
答案 1 :(得分:0)
在您尝试连接字符串时,您的语法错误,我认为您的意思是使用:
Range("G" & i).Formula = "=MID(E" & i & ",4,3)"
基于你的代码,我认为这将完全相同的事情,而不必循环或声明任何变量:
Sub test()
With Range("G1:G" & Cells(Rows.Count, 2).End(xlUp).Row)
.FormulaR1C1 = "=IF(UPPER(LEFT(RC[-2],2))=""BB"",MID(RC[-2],4,3),"""")"
.Value = .Value
End With
End Sub