|  
                                             
	Hallo, 
	zum Punkt 1: 
	Das Feld "Datum" wurde eingetragen, da sich der Datenbereich um eine Spalte verschoben hat. 
	Das Fehlverhalten wurde beseitigt. 
	zum Punkt 2: 
	Reg-Nr. wurde mit aufgenommen in die zu kopierenden Daten 
	zum Punkt 3: 
	In die Splte H wird in die Zell-Eigenschaft FormulaR1C1 folgende Formel eingetragen: 
	=IF(RC[-1]=3300,RC[-3]*1.07,RC[-3]*1.19) 
	das entspricht für Zelle H2: =WENN(G2=3300;E2*1,07;E2*1,19) 
	Zitat: Zelle H2 Funktion =Wenn(F3=3300;D2*1,07;D2*1,19) 
	Hier wird mit F3 eine Zelle in der nächsten Zeile abgefragt. Ich habe es als Tippfehler angesehen. 
	Falls es dennoch bewusst kein Tippfehler sein sollte, muss die Formel im Code wie folgt angepasst werden: 
	=IF(R[1]C[-1]=3300,RC[-3]*1.07,RC[-3]*1.19) 
	das entspricht für Zelle H2: =WENN(G3=3300;E2*1,07;E2*1,19) 
	Die Spalten haben sich durch das Einfügen der Angabe "Reg-Nr." um eins nach Rechts verschoben. 
	Hier der komplette VBA-Code: 
Option Explicit
Sub AnalyzeAndCopy()
    Dim wsh As Worksheet
    Dim rngChk As Range
    Dim rngData As Range
    Dim wshNew As Worksheet
    Set wsh = ThisWorkbook.Worksheets(1)
    
    ' Von H3 bis Spalte T alles Scannen
    Set rngData = wsh.Range(wsh.Range("H3"), wsh.Cells(wsh.UsedRange.Count + wsh.UsedRange.Top, 24))
    For Each rngChk In rngData.Cells
        If Not rngChk.Value = "" Then
            If wshNew Is Nothing Then
                Set wshNew = CreateNewWorkbook
            End If
            AddNewValue wshNew, rngChk
        End If
    Next
End Sub
Function CreateNewWorkbook() As Worksheet
    Dim wbk As Workbook
    Dim wsh As Worksheet
    
    Set wbk = Application.Workbooks.Add()
    Set wsh = wbk.Worksheets(1)
    
    wsh.Range("A1").Value = "kreditor"
    wsh.Range("B1").Value = "kunde"
    wsh.Range("C1").Value = "Rg-Nr."
    With wsh.Range("D:D")
        .Cells(1, 1).Value = "datum"
        .NumberFormat = "m/d/yyyy"
    End With
    With wsh.Range("E:E")
        .Cells(1, 1).Value = "betrag"
        .NumberFormat = "_-* #,##0.00 [$€-407]_-;-* #,##0.00 [$€-407]_-;_-* ""-""?? [$€-407]_-;_-@_-"
    End With
    
    wsh.Range("F1").Value = "kostenstelle"
    wsh.Range("G1").Value = "gegenkonto"
    
    With wsh.Range("H:H")
        .Cells(1, 1).Value = "brutto"
        .NumberFormat = "_-* #,##0.00 [$€-407]_-;-* #,##0.00 [$€-407]_-;_-* ""-""?? [$€-407]_-;_-@_-"
    End With
    Set CreateNewWorkbook = wsh
End Function
Sub AddNewValue(wshOutSheet As Worksheet, rngMoney As Range)
    Dim rngWrite As Range
    Dim rngKreditor As Range
    Set rngWrite = wshOutSheet.Cells(wshOutSheet.UsedRange.Rows.Count + 1, 1)
    ' Kreditor in Spalte D
    Set rngKreditor = rngMoney.Worksheet.Cells(rngMoney.Row, 4)
    
    ' Kreditor
    rngWrite.Value = rngKreditor.Value
    ' Kunde
    rngWrite.Offset(ColumnOffset:=1).Value = rngKreditor.Offset(ColumnOffset:=1).Value
    ' Reg-Nr.
    rngWrite.Offset(ColumnOffset:=2).Value = rngKreditor.Offset(ColumnOffset:=2).Value
    ' Datum
    rngWrite.Offset(ColumnOffset:=3).Value = rngKreditor.Offset(ColumnOffset:=3).Value
    ' Betrag
    rngWrite.Offset(ColumnOffset:=4).Value = rngMoney.Value
    ' Kostenstelle
    rngWrite.Offset(ColumnOffset:=5).Value = rngMoney.EntireColumn.Cells(1, 1).Value
    ' Gegenkonto
    rngWrite.Offset(ColumnOffset:=6).Value = rngMoney.EntireColumn.Cells(2, 1).Value
    ' Berechnungsformel
    rngWrite.Offset(ColumnOffset:=7).FormulaR1C1 = "=IF(RC[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)"
    ' rngWrite.Offset(ColumnOffset:=7).FormulaR1C1 = "=IF(R[1]C[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)"
End Sub
	LG, BigBen 
     |