2016-07-14 15 views
1

Ich möchte ein Makro erstellen, die alle Zellen einer Spalte überprüfen und wenn die ersten zwei Zeichen einer Zelle "BB" ist dann möchte ich das Makro drei Zeichen aus der Zelle extrahieren und einfügen zur nächsten Spalte aber eine entsprechende Zeile. Aber meine Formel nach der if-Klausel funktioniert nicht. das ist, was ich da getan habe:Korrektur Formel in VBA Excel

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 

Dank im Voraus

Antwort

0

mit folgenden Versuchen. Es wird

Range("G" & i).Value = Mid(Range("E" & i), 4, 3) 

funktionieren, wenn die Zelle nicht auf 7 begrenzt ist, dann müssen Sie wie unten

Range("G" & i).Value = "=Mid(E" & i & ", 3, " & Len(E & "& i & ") & ")" 

es vom 3. Zeichen bis zum letzten Zeichen in einer Zelle extrahieren.

+0

Thank u Karthick es jetzt funktioniert –

+0

Bitte markieren sie es als Antwort, wenn es gelöst. –

0

Ihre Syntax falsch ist, wo Sie versuchen, Strings zu verketten, ich glaube, Sie verwenden bedeuten:

Range("G" & i).Formula = "=MID(E" & i & ",4,3)" 

Basierend auf Ihren Code ich denke, das wird genau dasselbe tun, ohne zu Schleife oder erklären alle Variablen:

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 
+0

Vielen Dank Macro man –

+0

Keine Sorge, vergessen Sie nicht, eine der Antworten als akzeptiert zu markieren, wenn es Ihr Problem gelöst hat (grüner Haken auf der linken Seite) –