2017-06-16 1 views
0

ich mit Makro bin zu kämpfen, wo ich das haben möchte:VBA - wenn die Bedingung dann Formel auf eine andere Säule gegeben erfüllt ist

Ich habe Tabelle mit Spalten A - AH und Zeilen Variable werden. Wenn die Spalte A "Kunde" enthält, sollte sie die Formel (= $ K $ 1 & V3) in die Spalte L setzen. Mit anderen Worten, wenn in der dritten Zeile die Spalte A3 "Kunde" ist, dann wird auf L3 die Formel. In der vierten Zeile ist Spalte A4 nicht "Kunde", sondern etwas anderes, dann sollte die Zelle L4 unberührt bleiben. Ich möchte es für alle Zellen verwenden, das bedeutet, dass das Makro erkennen sollte, wo ist das Ende der Tabelle = da die Anzahl der Zeilen von Tag zu Tag ändert.

Ich habe bereits diesen Code:

Sub testFind() 
Dim rng As Range 
Dim rngFound As Range 

Set rng = Range("A:A") 

Set rngFound = rng.Find("Customer") 

If rngFound = "Customer" Then 
    ActiveCell.FormulaR1C1 = "=R1C11&RC[10]" 

Else 


End If 


End Sub 

Aber es funktioniert nicht, natürlich :).

Vielen Dank für jede Beratung!

+1

Einfach nur neugierig, warum Sie müssen VBA? In 'L1' könntest du' = If ($ A1 = "Kunde", [Formel], "") 'machen und runter ziehen, nein? – BruceWayne

+0

Oh ja, das würde auch funktionieren, aber die Dateien ändern sich für jeden Tag und ich dachte, diese Lösung via VBA könnte flüssiger sein. – Srpic

Antwort

1

Wenn Sie eine VBA-Lösung verwenden möchten, können Sie den Code unten (im Code als Kommentare Erklärung) verwenden können:

Option Explicit 

Sub testFind() 

Dim LastRow As Long 
Dim rng As Range, C As Range 

With Worksheets("Sheet1") ' <-- replace "Sheet1" with your sheet's name 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row in column A 
    Set rng = .Range("A2:A" & LastRow) ' set the dynamic range to be searched 

    ' loop through all cells in column A 
    For Each C In rng 
     If C.Value = "Customer" Then 
      C.Offset(, 11).Formula = "=$K$1&V" & C.Row ' use offset to put the formula on column "L" 
     End If 
    Next C 
End With 

End Sub 

Hinweis: Wenn der Wert in der Spalte „A“ besteht aus dem Wort „Kunden“ (muss nicht vor genaue Übereinstimmung sein und nach), dann die Zeile verwendet unter:

If C.Value Like "*Customer*" Then 
+0

Ausgezeichnet !! Es funktioniert gut. Vielen Dank, Shai! :) – Srpic

0

Zellen (Rows.Count, "A") Ende (xlUp) .Row -.

If Activesheet.formulaRC[-10]= "customer" then 
     ActiveCell.FormulaR1C1 = "=RC[-1]&RC[11]" 
    end if 
- können letzte Zeile in der Tabelle und verwendeten Wenn zu überprüfen, ob die Spalte A enthält "Kunden" zu finden verwendet werden

jetzt Schleife durch Reihen

Verwandte Themen