2017-12-21 5 views
0

Ich möchte Hilfe mit einem Blatt, das ich versuche zu erstellen.Zelle neben einer Zelle einfügen, die einen bestimmten Wert enthält

Mein Problem

Ich mag ein Makro machen, die eine Zelle mit einem bestimmten Wert zu einer Zelle neben einfügt. Mein Blatt sieht etwas wie folgt aus:

Invoice  14-12-2017 USD  400,00 
Discount     USD  125,65 
Creditmemo 14-12-2017 USD  205,60 
Invoice  16-12-2017 USD  906,75 
Invoice  19-12,2017 USD  855,00 
Discount     USD  105,80 

Das Problem ist, dass ich eine Zelle rechts von Zellen, die das Wort „Discount“ enthalten, eingefügt werden soll, da die Daten nicht in den rechten Spalten ausgerichtet ist, immer dann, wenn ein Rabatt Zelle erscheint.

Was ich bisher

Cells.Find(What:="Discount", After:=ActiveCell, LookIn:=xlFormulas, _ 
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False).Activate 

    ActiveCell.Offset(0, 1).Insert Shift:=xlShiftToRight 

Tor

Ich möchte die For Each String mir zu erlauben, zu verwenden, was ich bisher herausgefunden, und es wiederverwenden bis es den Grund meiner Daten erreicht. Wenn es den Boden erreicht, sollte es den Suchprozess stoppen und alles weiterführen, was ich unter dieser Funktion des Makros haben könnte. Kann ich VBA dazu bringen, das zu tun, was ich von ihm erwarte? Lass es mich wissen, bitte.

+0

[Finden Alle Spiele] (http://www.cpearson.com/excel/findall.aspx) ist was du brauchst. Ich stimme auch zu, diese Frage als off-top zu schließen, da es sich hierbei nicht um einen Code handelt, der nicht funktioniert, sondern darum, Code zur Verfügung zu stellen, ohne irgendeinen Versuch zu zeigen, den gewünschten Code zu erstellen. –

Antwort

1

Wenn Sie eine Schleife durch die Zellen wollen und setzen Sie nach rechts dann:

Sub Button1_Click() 
    Dim LstRw As Long 
    Dim Rng As Range, c As Range 

    LstRw = Cells(Rows.Count, "A").End(xlUp).Row 
    Set Rng = Range("A1:A" & LstRw) 
    For Each c In Rng.Cells 
     If LCase(c) = "discount" Then 
      c.Offset(, 1).Insert Shift:=xlToRight 
     End If 
    Next c 
End Sub 

Wenn Sie einfügen möchten, wenn es eine leere Zelle ist, dann können Sie spezielle Zellen verwenden.

Sub InsertOnBlank() 

    Columns("B:B").SpecialCells(xlCellTypeBlanks).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub 
0

Wenn Ihre Daten in Sheet1 ist, dann sollte folgendes tun, was Sie erwarten:

Sub foo() 
LastRow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row 
For i = 2 To LastRow 
    If Sheets("Sheet1").Cells(i, 1).Value = "Discount" Then Sheets("Sheet1").Cells(i, 2).Insert Shift:=xlToRight 
Next i 
End Sub 
Verwandte Themen